Objective c 为什么不是';我的UITableViewCell没有被铸造吗?
在我的表视图的Objective c 为什么不是';我的UITableViewCell没有被铸造吗?,objective-c,ios,casting,Objective C,Ios,Casting,在我的表视图的cellforrowatinexpath中 MenuItemCell *cell = (MenuItemCell *)[[[NSBundle mainBundle] loadNibNamed:@"ResultCell" owner:nil options:nil] objectAtIndex:0]; 在您告诉我不要使用xib之前:我有多个表视图,它们的单元格需要看起来相同。使用xib似乎是实现这一目标的最佳方式 所讨论的结果Cell xib由MenuItemCell拥有MenuI
cellforrowatinexpath
中
MenuItemCell *cell = (MenuItemCell *)[[[NSBundle mainBundle] loadNibNamed:@"ResultCell" owner:nil options:nil] objectAtIndex:0];
在您告诉我不要使用xib之前:我有多个表视图,它们的单元格需要看起来相同。使用xib似乎是实现这一目标的最佳方式
所讨论的结果Cell xib由MenuItemCell
拥有MenuItemCell
是UITableViewCell
的另一个子类的子类
问题是:我将断点直接放在单元格分配行之后,下面是我的lldb结果:
(lldb) po [cell class]
(id) $3 = 0x00b6b5fc UITableViewCell
为什么我的单元格是
UITableViewCell
而不是MenuItemCell
?(或者可能是这样的,po
不是解决这个问题的正确方法?您可能没有告诉Xcode/Interface Builder从XIB实例化MenuItemCell,因此它使用默认实现,即UITableViewCell。注意,强制转换对象只会使编译器相信它是指定类的实例;它不会神奇地将对象转换为类的实例。(换句话说,它是一个copmile时间表达式,而不是运行时表达式。)您可能没有告诉Xcode/Interface Builder从XIB实例化MenuItemCell,因此它使用默认实现,即UITableViewCell。注意,强制转换对象只会使编译器相信它是指定类的实例;它不会神奇地将对象转换为类的实例。(换句话说,它是一个copmile时间表达式,而不是运行时表达式。)您可以使用isKindOfClass方法始终检查对象是否属于某个类
[cell isKindOfClass:[MenuItemCell类]]
还有,就像H2CO3所说的。您可能忘记将owner类设置为MenuItemCell。您可以使用isKindOfClass方法始终检查对象是否属于某个类 [cell isKindOfClass:[MenuItemCell类]]
还有,就像H2CO3所说的。您可能忘记将owner类设置为MenuItemCell。下面是如何设置NIB文件的owner类的屏幕截图
下面是如何设置NIB文件的所有者类的屏幕截图
ResultCell.xib在文档大纲中选择“文件所有者”时,在Identity inspector的自定义类字段中显示“MenuItemCell”。当在文档大纲中选择单元格时,它是否必须显示相同的内容?酷。顺便说一句,我不使用Xcode,所以我不知道如何设置这些棘手的属性(我总是从代码创建所有内容,而且我不在Mac上…)ResultCell.xib在文档大纲中选择“文件所有者”时,在Identity inspector的自定义类字段中显示“MenuItemCell”。当在文档大纲中选择单元格时,它是否必须显示相同的内容?酷。顺便说一句,我不使用Xcode,所以我不知道如何设置那些棘手的属性(我总是从代码创建所有内容,而且无论如何我不在Mac上…)