objective-c - 如何检查对象是否为 UIButton

标签 objective-c uibutton

我有一个 if 语句需要知道对象类型是否是一个按钮。

到目前为止我有:

NSLog(@" %@ ",[myObject class]);

它返回 UIButton,所以我知道这是有效的。

接下来是if语句:

if([myObject isMemberOfClass:_______])

这是我遇到问题的地方,因为不允许我提供 UIButton 作为 isMemberOfClass: 的参数。我尝试使用 UIButtonTypeCustom,但它不满足 if 语句。

有什么建议吗?

谢谢。

最佳答案

其他答案和评论已经涉及到这一点,但它可能会变得更加清晰。

当您使用 isMemberOfClass: 时,参数必须是一个 Class 对象。您可以使用 class 选择器为任何类获取其中之一。因此:

if ([myObject isMemberOfClass:[UIButton class]])
    NSLog(@"It's a UIButton");
else
    NSLog(@"It's not a UIButton");

现在,isMemberOfClass: 仅当对象是 UIButton 的具体实例时才返回 YES。然而,更常见的是对对象是否继承特定类感兴趣——尤其是在这里,因为 UIKit 可能在幕后使用 UIButton 的私有(private)子类。为此,您需要 isKindOfClass: 代替:

if ([myObject isKindOfClass:[UIButton class]])
    NSLog(@"It's a UIButton or some subclass");
else
    NSLog(@"It's not a UIButton");

关于objective-c - 如何检查对象是否为 UIButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11507908/

相关文章:

ios - 如何让 segue 在按下按钮时等待函数完成?

swift - 带有@IBDesigable/@IBInspectable 的 Storyboard中的按钮上未显示圆角半径

ios - UIButton touchUpInside 与 UITableViewCell 滑动事件冲突

ios - 将另一个 ViewController 传递的值分配给字符串时出现问题

iphone - 核心剧情区用这种填充?

ios - 为什么有些 ios header 在没有 cdecl 的情况下被翻译成 pascal?

iphone - UIButton 标题不出现或被剪切 - 仅最底部的标签

ios - 使用自动布局时更改 UIButton 的大小?

objective-c - 从 Objective-C 类调用 Swift 函数

objective-c - NSObject 子类作为属性