我正在使用RESIDEMENU,并尝试在LeftMenuViewController的单元格之间添加一行,这是我的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
cell.backgroundColor = [UIColor clearColor];
cell.textLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:21];
cell.textLabel.textColor = [UIColor whiteColor];
cell.textLabel.highlightedTextColor = [UIColor lightGrayColor];
cell.selectedBackgroundView = [[UIView alloc] init];
}
NSArray *titles = @[@"Home", @"Calendar", @"Profile", @"Settings", @"Log Out"];
NSArray *images = @[@"IconHome", @"IconCalendar", @"IconProfile", @"IconSettings", @"IconEmpty"];
cell.textLabel.text = titles[indexPath.row];
cell.imageView.image = [UIImage imageNamed:images[indexPath.row]];
UIView * lineView= [[UIView alloc]initWithFrame:CGRectMake(10, 0, cell.contentView.bounds.size.width, 3)];
lineView.backgroundColor=[UIColor redColor];
[cell.contentView addSubview:lineView];
return cell;
}
我最初可以看到这些线条,但是当我触摸任何一个单元格时,单元格会突出显示,并且这个单元格的线条会奇怪地消失。修复它的方法有哪些?
之前的快照:
单击一个单元格时的快照:
答案 0 :(得分:2)
当选择或突出显示单元格时,UITableViewCell会更改所有子视图的背景颜色。
您有三种选择:
没有选择风格
cell.selectionStyle = UITableViewCellSelectionStyleNone;
子类UITableViewCell
并覆盖Tableview单元格的setSelected:animated
和/或setHighlighted:animated
将该行添加为图层
CALayer* layer = [CALayer layer];
layer.frame = CGRectMake(10, 0, cell.contentView.bounds.size.width, 3);
layer.backgroundColor = [UIColor redColor].CGColor;
[cell.contentView.layer addSublayer:layer];
答案 1 :(得分:0)
另一种解决方法是覆盖setBackgroundColor:并公开类似的方法来更改其backgroundColor。
@interface
- (void)setPersistentBackgroundColor:(UIColor*)color;
@implementation
- (void)setPersistentBackgroundColor:(UIColor*)color
{
super.backgroundColor = color;
}
- (void)setBackgroundColor:(UIColor *)color
{
// [super setBackgroundColor:color];
// prohibit from changing its background color.
}