0

我在我的 TableView 中使用了一个带有一些 UILabel 的自定义单元格。我需要在选择/突出显示它们时更改它们的颜色。

1)我应该使用 tableviewWillDisplayCell: 吗?2)如何区分其中选定/突出显示的单元格?

4

3 回答 3

1

您无需对发现突出显示/选择做任何事情。UITableViewCell 被选中时会自动突出显示其所有子视图(可以突出显示的子视图)。UILabel一个可以高亮的视图;也就是说,它有一个highlighted属性,它会自动响应突出显示。

所以你没有工作要做;你想多了这个问题。只需设置每个标签的highlightedTextColor属性,一切都会自动发生。正如另一个答案指出的那样,您可以在笔尖中直接执行此操作,也可以在代码中执行此操作。

如果在选择单元格时确实需要做一些特殊的事情,最简单的方法是使用 UITableViewCell 子类并覆盖setSelected:animated:。但在你的情况下似乎不需要这个。

于 2012-11-25T16:45:04.177 回答
0

您可以在笔尖上设置 UILabel 的突出显示颜色。选择界面编辑器上的标签,在右侧面板上,您应该找到一个更改突出显示颜色的选项(我不在 Mac 上,因此无法提供更精确的说明)。

如果找不到,只需更改代码上的颜色即可。我假设您使用以下内容更改该标签的文本:

myLabel.text = @"something";

只需设置突出显示的TextColor:

myLabel.highlightedTextColor = [UIColor redColor];
于 2012-11-25T12:12:47.883 回答
-1

first things first, are you able to see your cell in the right way? if you did create a custom cell i would go with this:

    // Customize the appearance of table view cells.
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

        static NSString *CellIdentifier = @"MyCustomCell";

        MyCustomCell *cell = (MyCustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];


        if (cell == nil) { 
            NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MyCustomCell"
                                                 owner:self options:nil];
            for (id oneObject in nib) if ([oneObject isKindOfClass:[MyCustomCell class]])
        cell = (MyCustomCell *)oneObject;
        } 

        // Set up the cell
        //...

        return cell;
    }

Now regarding your questions,

1-) I Use the method tableviewWillDisplayCell when i have to work the background of the uitableviewcell so this might not be what you're looking for

2-) If you select a specific tableViewCell it will be selected (by default it will leave it blue), so if you just want to select the last selected cell, you just need to use this:

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    //...

    // do your stuff

}

if you want to use your highlight methods for your custom appearance you'll have to add [tableView deselectRowAtIndexPath:indexPath animated:YES]; to your didSelectRowAtIndexPath and then change the UI of the tableViewCell. Also if you want to save wich cell has been selected you can save the indexPath.row in a data structure such as a NSMutableArray and you would have to do that operation in the didSelectRowAtIndexPath method

hope this helps, if you need any further help, let me know!

Jorge

于 2012-11-25T16:23:52.060 回答