我在UITableView
内有UITableViewCell
(嵌套UITableView
禁用滚动)
一切正常。但是当我点击单元格时会出现问题。它会突出显示,但嵌套的UITableView
会将其颜色更改为白色,这看起来不太好。
有没有办法改变这个?我已将嵌套的UITableView's
backgroundView
及其cells
设置为transparent
。
编辑:Selection
已停用嵌套UITableView
。点击发生在外部UITableView
的单元格上,这会使整个内部UITableView
变为白色。
EDIT2:以下是点按之前和期间的一些屏幕截图
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()
答案 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() }