tableView 单选及多选的简单实现

单选

单选:百度了一下,发现目前单选的实现方法都是“设置一个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]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容