我有一个带有5个单个分组单元格的UITableView,允许用户从每个选项访问特定的其他屏幕。然后,用户将返回此屏幕,我希望能够对最后选择的单元格设置复选标记,并关闭之前的任何复选标记。
我想在didSelectRowAtIndexPath:
中实现这一目标,但似乎无法做到这一点。
动态细胞有几个答案,但静态没什么,任何人都可以帮忙吗?
答案 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;