我有一个tableview,当用户选择单元格时,它会将accessorytype
设置为UITableViewCellAccessoryCheckmark
。
现在,当我导航到上一个屏幕时,然后前进到此tableview,我的单元格仍然处于检查状态。
有没有办法取消所有这些?我猜基本上将它们全部设置为UITableViewCellAccessoryNone
。
当视图出现时,我尝试使用reloadData
,但似乎没有触发cellForRowAtIndexPath
(这是我的逻辑设置单元格accessorytype
的地方)
答案 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上