2017-10-05 81 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

相關問題