9

我刚刚注意到 iOS 上的 UITableViewCell 类和 userInteractionEnabled 属性有些奇怪。

看来,如果在将文本分配给单元格标签之前将 userInteractionEnabled 设置为 NO ,则文本将显示为灰色。但是,在设置文本后将userInteractionEnabled 设置为 NO会使文本颜色变为黑色(请参见下面的示例代码片段)。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (!cell)
       cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];

    // swap these two lines around, and the text color does not change to grey!
    cell.userInteractionEnabled = (indexPath.row % 2) == 0;
    cell.textLabel.text = @"Hello";

    return cell;
}

这真的很烦人,因为这意味着在重复使用单元格的情况下我最终会出现不同的行为。上面的示例演示了这一点 - 表格的第一页显示了带有灰色/黑色文本的交替行。进一步向下滚动,以便重复使用单元格,您可以看到出现问题。

我只是想知道我是否做错了什么,或者这是一个 iOS 错误?我在 iPad 3 上的 iOS 5.1 下看到了问题。任何见解都非常感谢!

4

2 回答 2

1

我想我为这个问题找到了一个更方便的解决方法(我认为这是一个错误):

像这样手动设置enabled属性:textLabeldetailTextLabel

cell.userInteractionEnabled = (indexPath.row % 2) == 0;
cell.textLabel.enabled = cell.isUserInteractionEnabled;
cell.detailTextLabel.enabled = cell.isUserInteractionEnabled;

这让我得到了答案: https ://stackoverflow.com/a/13327632/921573

于 2013-08-31T19:38:59.820 回答
1

我发现如果我把它放在cell.textLabel.textColor = [UIColor blackColor];前面cell.userInteractionEnabled = NO;,它似乎可以解决问题。这就是它在 iOS 6.0.1 上的工作方式

cell.textLabel.textColor = [UIColor blackColor];
cell.userInteractionEnabled = NO;
于 2013-01-10T18:02:47.523 回答