如何防止一行UITableView取消选择?

时间:2012-11-16 06:35:40

标签: objective-c ios uitableview

当我选择一行UITableView时,它变为绿色(自定义),但当我选择另一行时,之前选择的行不会保持绿色。我在每行选择后重新加载我的桌子。我试过这个

NSIndexPath *selection = [mainTable indexPathForSelectedRow];
[mainTable selectRowAtIndexPath:selection animated:NO
scrollPosition:UITableViewScrollPositionNone]; 

但是使用此代码我只获得最近选定的行绿色(已选中) 我已经搜索了这个并找到了一些建议,其中大多数建议将所选行的索引值存储在一个数组中并稍后使用这个数组,我试过这个但是它没有用。 任何其他建议或示例代码将不胜感激。

2 个答案:

答案 0 :(得分:7)

更新

实现此目标的更好方法是从UITableViewDelegate方法tableView:willDeselectRowAtIndexPath:返回您希望保持选中的indexPath的nil。

不要使用它:

尝试添加UITableViewDelegate方法:

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
  //use this for row u want to prevent to deSelect
  [tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];               
}

答案 1 :(得分:4)

这样做:

mainTable.allowsMultipleSelection = YES;

来自UITableView Class Reference

  

<强> allowsMultipleSelection

     

一个布尔值,用于确定用户是否可以在编辑模式之外选择多行。

     

@property(nonatomic) BOOL allowsMultipleSelection

     

<强>讨论

     

此属性控制是否可以在编辑模式之外同时选择多行。当此属性的值为“YES”时,将在每个被点击的行旁边放置一个复选标记。再次点击该行会删除复选标记。如果您调用indexPathsForSelectedRows,则可以获取标识所选行的索引路径。

     

此属性的默认值为NO