iOS UItableviewCell 自定义选中颜色及默认选中首行

需求如标题, 实现方法如下:

在didSelectRow中进行如下设置:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    cell.selectedBackgroundView = [[UIView alloc]initWithFrame:cell.bounds];
    cell.selectedBackgroundView.backgroundColor = [UIColor colorWithHexString:@"0095d9"];
   }

这样我们实现了第一个需求,在点击的时候,会显示自定义的颜色,而不是系统的颜色.

接下来实现第二个需求,在你请求完数据,进行reloadData之后, 添加如下方法:

	   [_mainTableView.mj_header endRefreshing];
           [_mainTableView reloadData];
            //表视图进行了刷新
	    //设置你想选中的某一行,我这里是第一行	
           NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
           //执行此方法,表明表视图要选中这一行
       	   [_mainTableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone];
           //调用此方法,显示我们自定义的选中颜色
           [self tableView:_mainTableView didSelectRowAtIndexPath:indexPath];

总结:  以前也做过这个需求,但由于时间比较久,并且之前好像还有bug,所以有重新整理做了一次;

这次实现的方式比较官方,没有自定义视图 ,都是使用系统的方法;

didSelected方法改变了cell的 selected属性,为YES,在官方文档中: 直接设置这个属性对cell的选中状态是没有用的;

要默认某一行,直接执行 :

[self tableView:_mainTableView didSelectRowAtIndexPath:indexPath]

是不起作用的;

要先执行:

   [_mainTableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone];

再执行选中方法,就可以实现了;

 

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!
技术狗 » iOS UItableviewCell 自定义选中颜色及默认选中首行