我正在尝试使用UILabel
属性简单地更改textColor
的颜色,并且当禁用userInteraction时它将无效,这没有任何意义,文档中没有任何内容提到这一点。但是,如果我删除该行颜色确实发生了变化,那就是正在发生的事情,但我不希望用户进行交互。
UITableViewCellStyleValue1
单元格左侧带有标签的单元格样式,左对齐且 黑色文字 ;在右侧是一个标签,其 蓝色文字 较小,并且是右对齐的。 “设置”应用程序使用此样式的单元格。 适用于iOS 3.0及更高版本。
两个标签都是 灰色 颜色,并且它们不会改变颜色。这是我的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease];
}
//If I remove this line the color changes
cell.userInteractionEnabled = NO;
UIColor *blackColor = [UIColor blackColor];
UILabel *mainLabel = cell.textLabel;
UILabel *detailTextLabel = cell.detailTextLabel;
mainLabel.backgroundColor = blackColor;
detailTextLabel.backgroundColor = blackColor;
//Trying to change color here but no effect
mainLabel.textColor = [UIColor redColor];
detailTextLabel.textColor = [UIColor whiteColor];
UIView *backView = [[[UIView alloc] initWithFrame:cell.frame] autorelease];
backView.backgroundColor = blackColor;
cell.backgroundView = backView;
mainLabel.text = @"Some text";
return cell;
}
编辑:我刚刚意识到,它与userInteractionEnabled = NO
有关,当删除文本颜色更改时,但我不想要用户交互,我怎么能关闭它但也改变颜色?创建我自己的UILabels
并将其添加到contentView
。
答案 0 :(得分:10)
好的,我知道如何解决这个问题,但它根本没有任何意义,问题是这一行:
cell.userInteractionEnabled = NO;
如果删除了textColor
更改,那么奇怪的是,如果我在更改textColor
颜色更改后更改了用户互动!
这是一个错误吗?我希望这个答案有助于任何人试图解决这个问题,因为它根本没有任何意义,并且没有关于此的文档。
答案 1 :(得分:2)
请检查我对类似问题的回答:
https://stackoverflow.com/a/18552074/921573
相应地在textLabels上设置enabled
属性可以解决此问题:
cell.userInteractionEnabled = (indexPath.row % 2) == 0;
cell.textLabel.enabled = cell.isUserInteractionEnabled;
cell.detailTextLabel.enabled = cell.isUserInteractionEnabled;