0

我有一个 UITableView,当它处于编辑模式时,选定的单元格的背景突出显示,但我分配给单元格标签的突出显示颜色不会在编辑模式下应用,尽管它在普通模式下的选择中工作正常。

UILabel *desc = [[[UILabel alloc]initWithFrame:CGRectMake(self.textXStart, descYStart, self.descWidth, descHeight)]autorelease];
desc.lineBreakMode = self.descLineBreakMode;
desc.font = font;
desc.textAlignment = NSTextAlignmentLeft;
desc.numberOfLines = self.descLinesNumber;
desc.text = descText;

desc.highlightedTextColor = [UIColor whiteColor];

然后我将它添加到单元格内容视图

在普通情况下,会显示突出显示的颜色,但是当我单击编辑按钮并选择一个单元格时,标签文本没有突出显示的颜色。

你认为这个问题的原因是什么。

4

2 回答 2

2

如果您已设置allowsMultipleSelectionDuringEditingYES,则UITableView“进入编辑模式时不查询编辑样式”,如类参考中所述:

http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableView_Class/Reference/Reference.html#//apple_ref/occ/instp/UITableView/allowsMultipleSelectionDuringEditing

于 2013-04-17T19:49:55.300 回答
1

我遇到了同样的问题。对我有用的是覆盖 didSelectRowAtIndexPath 和 didDeselectRowAtIndexPath 并在我的自定义单元格中手动设置标签的颜色。

此外,您需要确保在进入和退出编辑模式时调用重新加载数据。

- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
    [super setEditing:editing animated:animated];
    [[self tableView] reloadData];
}

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
    DocumentCell *cell = (DocumentCell *) [tableView cellForRowAtIndexPath:indexPath];
    if([cell isEditing]) {
        cell.titleLabel.textColor = [UIColor blackColor];
        cell.dateLabel.textColor = [UIColor blackColor];
        cell.tagsLabel.textColor = [UIColor blackColor];
    }
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    DocumentCell *cell = (DocumentCell *) [tableView cellForRowAtIndexPath:indexPath];
    if([cell isEditing]) {
        cell.titleLabel.textColor = [UIColor whiteColor];
        cell.dateLabel.textColor = [UIColor whiteColor];
        cell.tagsLabel.textColor = [UIColor whiteColor];
    }
}
于 2013-10-14T17:11:16.463 回答