2017-10-05 8 views
0

私はストーリーボードを使用してUIViewを追加し、サブクラス化しました。このビュー内では、プログラムでUITableViewを追加しています。テーブルビューを作成して追加するコードは次のとおりです。プログラムで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!) 
} 

これはそのようです。私は、テーブルビューの背景には、私も働いているように見えるクリアするセルの背景色を設定している(それはスクリーンショットでは白です)

黄色であることを期待しています。私がUI階層を見ると、白がテーブルビューから来ていることはかなり明白です。

私は本当に海峡前進する必要があります。このように感じます。奇妙な部分は、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()'は 'required init?(コーダーaDecoder:NSCoder)'から呼び出されます。私はこの問題の一部であるかもしれないと思います。なぜなら、メインスレッド(@Badhan Ganeshのように)で背景色を設定すると問題を解決したようです。おそらく、 'required init?(coder aDecoder:NSCoder)'の関数を呼び出すと、UIスレッド以外のスレッドで実行されることがあります。 – keverly

関連する問題