自定义单元格中的自定义tableview单元格选择颜色

时间:2012-07-11 07:59:18

标签: iphone objective-c ios interface-builder

我已经找了两天关于这个,但找不到我的答案......

我有一个自定义的uitableviewcell,然后我需要在选择单元格时实现自定义颜色。

cell.selectedBackgroundView.backgroundColor = [UIColor greenColor];

对我不起作用。或者如果它有效,背景颜色是清晰的,我不知道什么是错的。我似乎不知道如何在Interface builder中正确连接我的自定义单元格。我可以创建一个自定义单元格,但唯一的问题是我不知道如何使选择工作。所以,如果有人能帮助我,我会非常感激。或者也许有人知道关于此的教程?

提前致谢!

5 个答案:

答案 0 :(得分:6)

希望以下代码必须有效。您需要将此代码复制粘贴到customCell实现文件中。

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];

UIView *backgroundView = [[UIView alloc] initWithFrame:self.selectedBackgroundView.frame];
[backgroundView setBackgroundColor:[UIColor colorWithRed:143/255.f green:141/255.f blue:147/255.f alpha:1.0]];
[self setSelectedBackgroundView:backgroundView];
[backgroundView release];
}

答案 1 :(得分:4)

无需自定义单元格。如果您只想更改单元格的选定颜色,可以执行以下操作:

UIView *bgColorView = [[UIView alloc] init];
[bgColorView setBackgroundColor:[UIColor redColor]];
[cell setSelectedBackgroundView:bgColorView];
[bgColorView release];

答案 2 :(得分:3)

@Pandey_Laxman是对的。简单地使用cell.seletedBackgroundView将无法正常工作,因为默认情况下,backgroundtable和UItableViewCell的selectedBackgroundView都是nil。在将其设置为单元格的selectedBackgroundView之前,需要初始化UIView。见selectedBackgroundView()

的定义

答案 3 :(得分:1)

Finnaly我找到了问题的答案..

我犯了很蠢的错误.. 首先,您需要将文件所有者类设置为NSObject到IB中的customcell, 然后你的uitableviewcell类作为你的自定义单元格,在我的情况下是“myCustomDisplayCell”..

另外从下到上(IB中的视图),我添加了一个uiview并连接了单元backgroundview, 在顶部我已经放置了一个uiview并与细胞selectbackgroundview连接(使视图颜色清晰) 然后finnaly我放置了一个uilabel uiimageview,并将这些连接起来..(你可以在这里添加自己需要的自定义单元格)。就是这样!看起来很容易..

谢谢大家的帮助!

答案 4 :(得分:0)

您可以在自定义单元格类中设置它(Swift 4):

import UIKit

class CustomTableViewCell: UITableViewCell { 

... 

 override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
        if(selected) {
            self.backgroundColor = UIColor(named: "BrilliantAzure")
        } else {
            self.backgroundColor = UIColor.white
        }
    }

...

因此,无需为此特定任务创建其他视图。