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

Bli*_*ios 5 objective-c uitableview ios

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

NSIndexPath *selection = [mainTable indexPathForSelectedRow];
[mainTable selectRowAtIndexPath:selection animated:NO
scrollPosition:UITableViewScrollPositionNone]; 
Run Code Online (Sandbox Code Playgroud)

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

Par*_*iya 7

更新:

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

不要用这个:

试试这个添加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];               
}
Run Code Online (Sandbox Code Playgroud)

  • 实现这一目标的更好方法是从`UITableViewDelegate`方法`tableView:willDeselectRowAtIndexPath:`返回nil,用于希望保持选中状态的indexPath.这样,单元格保持选中状态(而不是在取消选择后立即选中). (5认同)

cra*_*ler 4

做这个:

mainTable.allowsMultipleSelection = YES;
Run Code Online (Sandbox Code Playgroud)

来自UITableView 类参考

允许多重选择

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

@property(nonatomic) BOOL allowsMultipleSelection

讨论

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

该属性的默认值为NO