在我的表格视图中cellForRowAtIndexPath
我有
MenuItemCell *cell = (MenuItemCell *)[[[NSBundle mainBundle] loadNibNamed:@"ResultCell" owner:nil options:nil] objectAtIndex:0];
在你告诉我不要使用xib之前:我有多个表格视图,其单元格需要看起来相同。使用xib似乎是实现这一目标的最佳方式。
有问题的ResultCell xib由MenuItemCell
“拥有”。 MenuItemCell
是UITableViewCell
的另一个子类的子类。
问题出现了:我在单元格分配行之后直接放置断点,这是我的lldb结果:
(lldb) po [cell class]
(id) $3 = 0x00b6b5fc UITableViewCell
为什么我的单元格是UITableViewCell
而不是MenuItemCell
? (或者它可能是po
并不是解决这个问题的正确方法吗?)
答案 0 :(得分:3)
您可能没有告诉Xcode / Interface Builder从XIB实例化MenuItemCell,因此它使用默认实现,即UITableViewCell。请注意,转换对象只会使编译器认为它是指定类的实例;它不将对象神奇地转换为类的实例。 (换句话说,它是一个copmile-time表达式,而不是运行时表达式。)
答案 1 :(得分:1)
以下是有关如何设置NIB文件的所有者类的屏幕截图
答案 2 :(得分:0)
您始终可以使用isKindOfClass方法检查对象是否属于某个类。
[cell isKindOfClass:[MenuItemCell class]]
另外,像H2CO3说的那样。您可能忘记将所有者类设置为MenuItemCell。