1

在我的表格视图中,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

为什么我的单元格是 aUITableViewCell而不是 a MenuItemCell?(或者也许它是并且po不是正确的方法来解决这个问题?)

4

3 回答 3

3

您可能没有告诉 Xcode/Interface Builder 从 XIB 实例化 MenuItemCell,因此它使用默认实现,即 UITableViewCell。请注意,强制转换对象只会使编译器认为它是指定类的实例;它不会神奇地将对象转换为类的实例。(换句话说,它是一个 copmile-time 表达式,而不是一个运行时表达式。)

于 2012-05-02T20:11:53.543 回答
1

这是有关如何设置 NIB 文件的所有者类的屏幕截图

在此处输入图像描述

于 2012-05-02T20:21:31.673 回答
0

您始终可以使用 isKindOfClass 方法检查对象是否属于某个类。

[cell isKindOfClass:[MenuItemCell 类]]

还有,就像H2CO3说的。您可能忘记将所有者类设置为 MenuItemCell。

于 2012-05-02T20:16:35.803 回答