2

我有一个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 部分,并且所有工作都如我所料。

谢谢你的帮助。

4

1 回答 1

1

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

于 2012-06-06T12:29:33.013 回答