昨天看到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或者进出编辑模式都会清除选中状态