查看UITableViewCell的帮助文档我们可以看到它有两个属性highLighted、selected。
这两者之间到底又怎么样的联系呢?当我们点击cell的时候都发生了什么呢?
要达到这个目的,很简单我们只要自定义一个cell继承自UITableViewCell,然后重载它的以下两个方法:
- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated;
- (void)setSelected:(BOOL)selected animated:(BOOL)animated;
这两个方法一个是设置cell的高亮状态,另一个是设置cell的选中状态,
- (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; if (selected) { _contentLbl.textColor = [UIColor whiteColor]; } else { _contentLbl.textColor = [UIColor blackColor]; } } - (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated { [super setHighlighted:highlighted animated:animated]; if (highlighted) { _contentLbl.textColor = [UIColor whiteColor]; } else { _contentLbl.textColor = [UIColor blackColor]; } }
当我们点击cell的时候,其实是先设置cell的高亮状态为YES,然后松手的时候再将cell的高亮状态设置为NO,
接着才是设置cell的选中状态为YES,
最后才会去调用delegate中的tableview:didSelectRowAtIndexPath:方法。
注:默认选中一行UITableViewCell
NSIndexPath *firstPath = [NSIndexPath indexPathForRow:0 inSection:0];
[_tableView selectRowAtIndexPath:firstPath animated:NO scrollPosition:UITableViewScrollPositionTop];//默认选中一行