2017-10-05 53 views
0

我已经添加了一个使用故事板和继承它的UIView。在这个视图中,我以编程方式添加了UITableView。这里是创建tableview并添加它的代码:以编程方式设置UITableView的背景颜色不起作用

private func commonInit() { 
    self.backgroundColor = .clear 

    self.categoryTableView = UITableView(frame: CGRect(x: 0, y: 0, width: self.frame.width, height: self.frame.height)) 

    categoryTableView?.delegate = self 
    categoryTableView?.dataSource = self 

    self.categoryTableView?.backgroundView = nil 
    self.categoryTableView?.backgroundColor = .yellow 

    self.categoryTableView?.isScrollEnabled = false 
    self.categoryTableView?.allowsMultipleSelection = true 

    self.addSubview(categoryTableView!) 
} 

这就是它的样子。我期待tableview的背景是黄色的(它在屏幕截图中是白色的)

我也设置了单元格背景颜色来清除哪个似乎工作正常。当我查看UI层次结构时,很明显White是来自桌面视图。

我觉得这应该是真的海峡前进。奇怪的部分是行self.categoryTableView?.isScrollEnabled = falseself.categoryTableView?.allowsMultipleSelection = true都似乎工作,但背景颜色变化不是。

+2

在主线程中设置背景颜色。 –

+0

@BadhanGanesh是的,它修复了它。谢谢! – keverly

回答

0

我在操场上测试了这个,结果如预期。

import UIKit 
import XCTest 
import PlaygroundSupport 


let view = UIView(frame: CGRect(x: 0, y: 0, width: 500, height: 500)) 
PlaygroundPage.current.liveView = view 

view.backgroundColor = UIColor.blue 

let tableView = UITableView(frame:CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height)) 
tableView.backgroundColor = UIColor.yellow 
view.addSubview(tableView) 

结果:

colored tableview

我的猜测是别的东西是在进行这里。也许有关框架大小的调整,或者你调用commonInit()方法的地方?

+0

'commonInit()'从所需的init?(编码器aDecoder:NSCoder)调用。我认为这可能是问题的一部分,因为在主线程中设置背景颜色(如@Badhan Ganesh建议的)似乎已经解决了这个问题。也许从'必需的init?(coder aDecoder:NSCoder)'调用函数'使得它运行在UI线程以外的线程上。 – keverly

相关问题