查看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];//默认选中一行
本文解析了UITableView中的UITableViewCell在点击过程中的状态变化,包括高亮(highlighted)与选中(selected)状态的区别与联系,并通过自定义cell的方式展示了如何控制这两种状态。
1535

被折叠的 条评论
为什么被折叠?



