我一直关注Apple的指南:
关于:静态行内容的技术。
我的问题如下:
我的所有单元格都是nil
。
根据Apple的说法,视图的加载应该实例化填充该nib文件的所有对象,仅对tableview进行实例化。因此,当单元格返回NULL单元格时,单元格为nil并在方法cellForRowAtIndexPath:
中崩溃。
我已经按照信件指南进行了搜索,并且没有找到任何解决方案,除了为每个单元格创建一个笔尖并在需要时加载这些笔尖,但该解决方案不如Apple解决方案优雅。
任何帮助都将不胜感激。
答案 0 :(得分:0)
您可能没有将细胞的IBOutlets绑定到细胞本身。如果您的单元格为nil
,那么您没有连线。
修改强>
如果IBOutlets已连接,但ivars为nil,则IBOutlets未连接。还有其他可能性,但这是最常见的。其他可能性:您尝试在viewDidLoad
之前访问。特别是,您无法在initWithFrame:
期间访问您的ivars。其他可能性是你在某些时候覆盖它们。在viewDidLoad
中查看其值。其他可能性是您正在加载错误的nib文件,或者根本没有加载nib文件。所有可能性,但我首先检查viewDidLoad
中的所有内容并仔细检查你的连接。
答案 1 :(得分:0)
在实例化表视图控制器时,在init
方法中,应调用超类([UIViewController initWithNibName:bundle:]
)的重写指定初始值设定项,并传入nib名称:
- (id)init {
return [self initWithNibName:NSStringFromClass([self class]) bundle:[NSBundle mainBundle]];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization here
}
return self;
}
有关详细信息,请参阅此答案:Automatically Loading XIB for UITableViewController