5

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

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

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

4

2 回答 2

8

更新:

实现此目的的更好方法是从您希望保持选中状态的 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];               
}
于 2012-11-16T06:52:35.283 回答
4

做这个:

mainTable.allowsMultipleSelection = YES;

UITableView 类参考

允许多重选择

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

@property(nonatomic) BOOL allowsMultipleSelection

讨论

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

此属性的默认值为NO

于 2012-11-16T06:53:28.000 回答