在我的表格视图的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
不是找出答案的正确方法?) 最佳答案
您可能没有告诉Xcode / Interface Builder从XIB实例化MenuItemCell,所以它使用默认的实现UITableViewCell。请注意,强制转换对象只会使编译器认为它是指定类的实例。它不会神奇地将对象转换为类的实例。 (换句话说,这是一个copmile时间表达式,而不是运行时表达式。)