cellForRowAtIndexPath为第一个以外的任何部分返回nil

时间:2012-06-06 11:42:39

标签: ios objective-c iphone xcode

我有一个UITableViewController,其UITableView是静态的,有三个部分。我试图在viewWillAppear中填充我的静态部分,如下所示:

-(void) viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [[[self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]] detailTextLabel] setText:@"Stuff"];
    [[[self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1]] detailTextLabel] setText:@"Other stuff"];
    ...
}

第一行填充0部分中的第0行,但第二行(实际上任何cellForRowAtIndexPath调用除第一行以外的任何部分)都返回一个nil单元格。

我做了一些测试来尝试缩小问题范围:

[self.tableView numberOfSections] // returns 3 - which is correct
[self.tableView numberOfRowsInSection:1] // return 4 - which is unique and correct for my second section

所以,表视图看起来有正确的部分,但是:

[self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1] // nil

我很困惑 - 有没有人知道可能导致它的原因?

我在代码中没有什么特别之处:它是在故事板中创建的直接静态表,从一开始就设置了所有三个部分;视图控制器正确地是UITableViewController的子类;我可以完美地填充0部分,并且所有工作都如我所料。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

如果最初出现视图控制器时屏幕上没有单元格,则可能尚未设置它们。您应该为您感兴趣的单元格创建出口,并以这种方式修改值。