UITableView中的静态内容 - 苹果指南的问题

时间:2011-09-22 16:03:13

标签: ios uitableview static

我一直关注Apple的指南:

http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/TableView_iPhone/TableViewCells/TableViewCells.html#//apple_ref/doc/uid/TP40007451-CH7

关于:静态行内容的技术。

我的问题如下:

我的所有单元格都是nil

根据Apple的说法,视图的加载应该实例化填充该nib文件的所有对象,仅对tableview进行实例化。因此,当单元格返回NULL单元格时,单元格为nil并在方法cellForRowAtIndexPath:中崩溃。

我已经按照信件指南进行了搜索,并且没有找到任何解决方案,除了为每个单元格创建一个笔尖并在需要时加载这些笔尖,但该解决方案不如Apple解决方案优雅。

任何帮助都将不胜感激。

2 个答案:

答案 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