如何使用静态其他单元格有选择地更改UITableviewCell外观

时间:2012-11-07 19:43:29

标签: ios uitableview nsindexpath

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

现在,只需要一行 - 在该行中加上复选标记 - 我找不到任何方法。我需要根据我的程序逻辑来做。

如果我实现数据源方法cellForRowAtIndexPath,我也需要为所有其他单元格做一些事情。在这样做的同时,我会将我静态执行的所有格式化为其他单元格。如果我为所有其他单元格返回nil,则它们将不会显示。

我尝试在我的UITableViewController viewdidLoad:

中使用此代码挑出此特定单元格
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

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

1 个答案:

答案 0 :(得分: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;