如何在ios中取消选中tableview上的所有单元格

时间:2012-03-13 01:55:10

标签: ios cocoa-touch uitableview

我有一个tableview,当用户选择单元格时,它会将accessorytype设置为UITableViewCellAccessoryCheckmark

现在,当我导航到上一个屏幕时,然后前进到此tableview,我的单元格仍然处于检查状态。

有没有办法取消所有这些?我猜基本上将它们全部设置为UITableViewCellAccessoryNone

当视图出现时,我尝试使用reloadData,但似乎没有触发cellForRowAtIndexPath(这是我的逻辑设置单元格accessorytype的地方)

3 个答案:

答案 0 :(得分:3)

我认为这可能会做你想要的。我假设您要取消选中所有单元格作为响应tableView:didSelectRowAtIndexPath的一部分:但您可以在任何地方插入此代码:

- (void)tableView:(UITableView *)tableView 
    didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Uncheck any visible, checked cells.
    NSArray *visibleCells = [tableView visibleCells];
    for (UITableViewCell *cell in visibleCells) {
        [cell setAccessoryType:UITableViewCellAccessoryNone];
    }

    // Now do whatever else you want in response to a row being selected.
}

答案 1 :(得分:2)

您应该在tableView:willDisplayCell:forRowAtIndexPath:而不是cellForRowAtIndexPath中设置配件类型,以便在显示时(而不仅仅是在创建时)更新配件类型。

答案 2 :(得分:0)

有一个名为clearsselectiononviewwillappear的tableview方法可能会被意外覆盖。默认行为应为YES。查看Apple的doc  在UITab上