0

我有充分的理由采用静态UITableViewCell设计,因为经过长时间的努力,我想出了我想要的表格格式。我tableView在故事板中设计了所有行。

现在,仅针对单行-在该行中添加复选标记-我找不到办法。我需要根据我的程序逻辑来做。

如果我实现 datasource 方法cellForRowAtIndexPath,我也需要为所有其他单元格做一些事情。在这样做的同时,我将清除我对其他单元格静态执行的所有格式。如果我返回nil所有其他单元格,它们将不会出现。

我试图用这段代码挑出这个特定的单元格,在我UITableViewControllerviewdidLoad:

NSIndexPath* NotifyRow = [NSIndexPath indexPathForRow:0 inSection:0];
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:NotifyRow];

if (MYCONDITION_IS_TRUE)
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
else
    cell.accessoryType = UITableViewCellAccessoryNone;

但上面不起作用,因为我总是得到cell=nil. 由于它的内置机制,当它在情节提要中有表格设计时,它不会在self.tableView结构上共享它。我尝试在第一个语句中更改行和部分值,但所有单元格都是nil.

如何从静态设计中挑选出我要修改的这个单元格?

4

1 回答 1

0

发布后不久,我意识到我的错误。我太早地调用 cellForRowAtIndexPath 来获取单元格 - 甚至在视图完全放置之前。

刚刚在我的 viewDidLoad 中的所有内容之上添加了一行,它就起作用了:

[self.tableView reloadData];

所以整体看起来像:

[self.tableView reloadData];
NSIndexPath* NotifyRow = [NSIndexPath indexPathForRow:0 inSection:0];
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:NotifyRow];

if (MYCONDITION_IS_TRUE)
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
else
    cell.accessoryType = UITableViewCellAccessoryNone;
于 2012-11-07T19:54:21.980 回答