我从 TableViewCell 派生。当我查询有关索引路径的表视图时,它返回一个 UITableViewCell。如何查找该对象是否是我的自定义类型“CustomCell”之一?

有帮助吗?

解决方案

if ([cell isKindOfClass:[CustomCell class]]) {
    [(CustomCell*)cell customCellMethod];
}

其他提示

if ([cell isKindOfClass:[CustomCell class]]) {
   // ...
}

一如往常,在面向对象的设计,尝试使用实例的阶级身份是一个代码味道,应该提高的标志。究竟什么是你想用你的自定义单元格呢?也许有人可以提出一个更好的办法。

没有母校什么,这是更好的设计依赖比类的接口(在Objective-C说话@protocol)上,因为它有助于解耦设计。定义与有关API一个@protocol你需要和你的CustomCell执行该协议。在你的代码可以再试验:

if([cell conformsToProtocol:@protocol(MyCellProtocol)]) {
  //...
}

,而不是测试类的身份。

如果你只需要一个单一的方法,可以使用[cell respondsToSelector:@selector(myMethod)]

实际上,您可以在这里使用两种方法。您可能想要的是 isKindOfClass:, ,但还有另一种方法称为 isMemberOfClass: 这只会返回 YES 如果接收者是所提供类的实例,而不是子类的实例。

例如,如果 DerivedClass 是一个子类 BaseClass, ,那么这里是每种方法的结果:

BOOL isKind = [aDerivedInstance isKindOfClass:[BaseClass class]]; // YES
BOOL isMember = [aDerivedInstance isMemberOfClass:[BaseClass class]]; // NO
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top