单选
单选:百度了一下,发现目前单选的实现方法都是“设置一个indexPath,记录当前选中的位置,然后选别的cell 的时候反选当前cell,选择新cell,还要在cellForRowAtIndexPath方法中返回判断是否是选中cell,设置选中。”
实际操作过程中发现,仅仅需要在cell的select方法中设置选中效果即可实现单选效果:
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state
self.accessoryType = selected ? UITableViewCellAccessoryCheckmark : UITableViewCellAccessoryNone;
}
如何获取当前选中的indexPath呢,一行代码搞定
[tableView indexPathForSelectedRow]
多选
网上多选的方法同样如单选,设置一个array,记录选中的indexPaths,然后在还要在cellForRowAtIndexPath方法中循环查找当前cell的indexpath是否在数组中,同时设置选中
查了查UITableView的框架,发现如下属性
@property (nonatomic) BOOL allowsMultipleSelection NS_AVAILABLE_IOS(5_0); // default is NO. Controls whether multiple rows can be selected simultaneously
在给tableView设置allowsMultipleSelection 为YES之后即实现了多选效果(cell的选中状态同单选一致),即实现了多选效果,且不必担心cell复用的问题,
至于获取当前选中的indexPaths呢,我们可以获取到选中indexPaths数组,其他操作就随意了
[tableView indexPathsForSelectedRows]