IOS开发入门:在Storyboard中为UITableView中的static cells设置选中背景色selectedBackgroundColor

背景描述

接触IOS开发十来天,需要做一个侧滑目录,侧滑功能使用SWRevealViewController框架。由于是新手嘛,觉得手写代码很麻烦,所以在storyboard中单独拖了一个UITableViewController的Scene,对应的UITableView选用Static Cells。


设置TableViwe使用Static Cells

有两级目录,第一级选中背景颜色是灰色,用原生的UITableViewCellSelectionStyleGray就可以。第二级要求没有背景色,文字变成绿色的。

目录UI示意图

捣鼓了一阵子发现原生可选项只有白色、灰色和没有(原来还有个blue,现在blue也没了)。于是就有了这个问题。


解决方案

思路一:
用代码设置。

动态的Cell只要指定DataSourse,实现tableView:cellForRowAtIndexPath:indexPath就可以根据路径为每个cell分别设置各种属性。换成了Static Cells怎么获取到cell呢?(百度一下各种答案还挺多的,今天有点晚了,一会还得赶地铁就先不写,下次补充。)
另外和可以在什么tableView:didSelectRowAtIndexPath:indexPath之类的函数里做。
还想过在viewDidLoad里遍历一下,后来发现viewDidLoad里还拿不到cell,要等viewWillAppear的时候才行。

思路二:
利用IBInspectable,实现一个UITableViewCell的子类,添加一个自定义的selectedBackgroundColor属性,把storyboard中的UITableView选择为自己的子类,以可视化的方式设置。

代码如下:

@interface CZTableViewCell : UITableViewCell

@property (nonatomic,assign) IBInspectable UIColor *selectedBackgroundColor;

@end

IBInspectable
@implementation CZTableViewCell

-(void)setSelectedBackgroundColor:(UIColor *)selectedBackgroundColor {
    UIView *view = [[UIView alloc] initWithFrame:self.frame];
    self.selectedBackgroundView = view;
    self.selectedBackgroundView.backgroundColor = selectedBackgroundColor;
}
@end

在storyboard中是这样的:


在storyboard中选择static cell直接设置选中背景色


问题

  • 用代码在tableView:didSelectRowAtIndexPath:indexPath里设置背景颜色会碰到颜色变深,不知道为什么
  • 以扩展的方式直接为UITableCell增加这个属性也可以在storyboard显示出这个框,但是运行的时候会有this class is not key value coding-compliant for the key:selectedBackgroundColor,不知道为什么
  • 有没有更好的方式?

希望有小伙伴指点迷津

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值