UITableViewCell内的UITableView在选中时会将颜色更改为白色

时间:2016-09-02 07:04:43

标签: ios swift uitableview

我在UITableView内有UITableViewCell(嵌套UITableView禁用滚动)

一切正常。但是当我点击单元格时会出现问题。它会突出显示,但嵌套的UITableView会将其颜色更改为白色,这看起来不太好。

有没有办法改变这个?我已将嵌套的UITableView's backgroundView及其cells设置为transparent

编辑:Selection已停用嵌套UITableView。点击发生在外部UITableView的单元格上,这会使整个内部UITableView变为白色。

EDIT2:以下是点按之前和期间的一些屏幕截图

Before the tap During the tap

EDIT3: 第一个代码UITableView

ViewControler's viewDidLoad

    self.tableView.delegate = self
    self.tableView.dataSource = self
    self.tableView.backgroundColor = UIColor.darkBlueColor()
    self.tableView.registerNib(UINib(nibName: "TimelineDay", bundle: nil), forCellReuseIdentifier: TimelineDayTableViewCell.identifier)

TimelineDayTableViewCell's awakeFromNib()

    self.tableView.delegate = self
    self.tableView.dataSource = self
    self.tableView.backgroundColor = UIColor.darkBlueColor()
    self.tableView.backgroundView = UIView.clearView()
    self.selectedBackgroundView = UIView.viewWithBackgroundColor(UIColor.accentColor())
    self.tableView.registerNib(UINib(nibName: "EventItemCell", bundle: nil), forCellReuseIdentifier: EventItemTableViewCell.identifier)

EventItemTableViewCell's awakeFromNib()

    self.backgroundView = UIView.clearView()
    self.selectedBackgroundView = UIView.clearView()

2 个答案:

答案 0 :(得分:3)

您可能需要继承您的单元格:

class YourTableViewCellClass: UITableViewCell
{        
    @IBOutlet weak var yourLabel: UILabel!

    override func setSelected(_ selected: Bool, animated: Bool) {
        if(selected) {

            self.contentView.backgroundColor = UIColor.red //or what you want
            self.yourLabel.textColor = UIColor.green //or what you want

        } else {

            self.contentView.backgroundColor = UIColor.white //or what you want
            self.yourLabel.textColor = UIColor.green //or what you want
        }
    }                
}

答案 1 :(得分:1)

尝试这个,干得好:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        var selectedCell:UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)!
        cellSelected.contentView.backgroundColor = UIColor.blueColor() }

    // if tableView is set in attribute inspector with selection to multiple Selection it should work.

    // Just set it back in deselect 

    override func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
        var cellToDeSelect:UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)!
        cellDeselected.contentView.backgroundColor = UIColor.clearColor() }