关闭UITableView静态单元格中的复选标记

时间:2012-12-31 12:18:53

标签: objective-c xcode uitableview

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

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

动态细胞有几个答案,但静态没什么,任何人都可以帮忙吗?

2 个答案:

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

答案 1 :(得分:1)

IBOutletCollection的正确语法是:

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