UITableView 保存选中状态的方式

昨天看到UITableView中的属性 数组

@property(nonatomic) BOOL allowsSelection;//是否容许选中cell,默认为YES
@property(nonatomic) BOOL allowsMultipleSelection;//是否容许多个选中cell
@property(nonatomic) BOOL allowsSelectionDuringEditing;//编辑状态下,是否容许选中cell 
@property(nonatomic) BOOL allowsMultipleSelectionDuringEditing;//编辑状态下,是否能多选cell

这是两组属性

第一组表示普通状态在,是否容许选中cell,是否容许多个选中cell 数据结构

第二组表示在编辑状态下,是否容许选中cell,是否容许多个选中cell 函数

- (NSIndexPath *)indexPathForSelectedRow;//返回选中的path,若是是多选,则返回第一个                            
- (NSArray *)indexPathsForSelectedRows;//返回选择的path,多个
调用上述方法, UITableView将返回选中的cell的path,或者path的数组

可是此时只能得到一个彻底没有选中状态的UITableView atom

若是咱们进入到一个UITableView,想要初始状态是部分选中,部分未选中,也就是按照咱们的数据内容来动态设置的,那么咱们应该对UITableViewCell作相应的设置 spa

- (void)setSelected:(BOOL)selected animated:(BOOL)animated;
试着调用了此函数来设置cell的选中状态.

可是却没有效果,并且有时候被调用的cell背景会变得有点奇怪..... 调试

调试发现,若是单纯的调用此函数,咱们只是把cell的状态修改了,可是UITableView保存的状态没有修改. code

UITableView会在cell建立完成后统一调用一次setSelected::函数设置cell的状态. ip

如此的话,那咱们在cell里面修改cell状态的方式就不对了. it

查看UITableView的API,发现此函数 io

- (void)selectRowAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated scrollPosition:(UITableViewScrollPosition)scrollPosition;
设置UITableView中cell的选中

在UITableViewCell建立完成以后调用此函数

如viewDidLoad:中,就能够将相应的cell设置成选中状态

到此,咱们就能够使用UITableView中现有的数据结构来保存Cell的选中状态了

PS:reloadData或者进出编辑模式都会清除选中状态

相关文章
相关标签/搜索