2

我有一个带有 5 个单个分组单元格的 UITableView,允许用户从每个选项访问特定的其他屏幕。然后用户将返回此屏幕,我希望能够在最后一个选定的单元格上放置一个复选标记并关闭任何以前的复选标记。

我正在努力实现这一目标,didSelectRowAtIndexPath:但似乎无法做到这一点。

动态单元格有一些可用的答案,但静态单元格没有可用的答案,有人可以帮忙吗?

4

2 回答 2

2

有多种方法可以管理此问题,但其中一种更简单的方法是将对单元格的引用存储在集合中,以便您可以轻松地将消息发送到所有单元格。例如,您可以添加如下属性:

@property(强,非原子) IBOutletCollection(NSArray) *cells;

@property (strong, nonatomic) IBOutletCollection(UITableViewCell) NSArray *cells;

并将其连接到 nib 文件或情节提要中的每个单元格。(如果您不使用 Interface Builder,请删除IBOutletCollection,并在您创建单元格的任何位置自行填充数组。)

然后您可以按如下方式管理选择:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    for (UITableViewCell *currCell in self.cells)
    {
        currCell.accessoryType = UITableViewCellAccessoryNone;
    }

    UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
    selectedCell.accessoryType = UITableViewCellAccessoryCheckmark;
}
于 2012-12-31T15:02:37.980 回答
1

IBOutletCollection 的正确语法是:

@property (strong, nonatomic) IBOutletCollection(UITableview) NSArray *cells;
于 2014-05-31T09:46:39.137 回答