tableView选中行的调用顺序/ 取消选中Cell

UITableViewCell它有两个属性highLighted、selected。很明显一个是高亮状态, 一个是选中状态。
UITableViewCell, 对应的2个方法
// 高亮状态调用的方法
- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated;

// 选中状态调用的方法
- (void)setSelected:(BOOL)selected animated:(BOOL)animated;
 
// 这个方法让tableView 默认选择第一个
 [self selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];

 

当我们点击cell的时候,其实是先设置cell的高亮状态为YES, 因为cell首先是出于高亮状态, 然后松手的时候再将cell的高亮状态设置为NO, 接着才是设置cell的选中状态为YES, 最后才会去调用delegate中的tableview:didSelectRowAtIndexPath:方法。
 
但是在开发中你会遇到点击cell, 如果cell的某行不需要被选中你要手动去设置取消点击cell选中状态, 那么就不能去调用 setSelected, 如果你调用setSelected取消cell选中, 你再滑动回当前行你会发现他还是被选中状态, 个人感觉是因为tableview 有个记录器, 记录当前你选中的是那些cell, 
 
真正调用的是tableview的方法
// 取消选中某行
- (void)deselectRowAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated;

调用它之后, 系统会调用setSelected, 并且传进去的参数是NO, 这样就会取消选中

- (void)setSelected:(BOOL)selected animated:(BOOL)animated;

 

 
posted @ 2016-01-20 16:13  To-J  阅读(1319)  评论(0编辑  收藏  举报