2013-04-03 59 views
1

我試圖避免將任何代碼添加到我的iOS項目中,因爲這是界面生成器應該爲您優化的視覺設置。更改界面生成器中的UITableViewCell背景顏色

所以我試圖建立在IB原型單元格,然後只要致電:

TableCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"TableCell"]; 

的問題是,如果我改變背景顏色爲IB細胞,當我運行保持白了我應用。我可以在表格單元中預設標籤的顏色,但不能設置背景顏色屬性。

作爲一個附加說明,我可以看到,單元格內的backgroundView的UIView在變量初始化後檢測並檢查變量後爲null。

UPDATE 我覺得IB背景色選項本質上是無用的嗎?我寧願不相信。

回答

3

不幸的是你不能這麼做。

改變細胞的tableView:willDisplayCell:forRowAtIndexPath:

背景顏色從UITableViewCell文檔:

注意:如果你想改變一個單元格的背景色(通過設置的背景顏色cell通過由UIView聲明的backgroundColor屬性)必須在tableView:willDisplayCell:forRowAtIndexPath:代表的方法中執行,而不是在數據源的tableView:cellForRowAtIndexPath:中執行。在iOS 3.0中,對組合式表格視圖中單元格的背景顏色的更改與以前版本的操作系統不同。它現在會影響圓角矩形內的區域,而不是其外部的區域。

+0

爲什麼在IB中可用的選項如果基本沒用? –

+0

這就是我一直在問自己......無論如何檢查編輯的答案。 – Petar

0

在界面構建器中,添加一個視圖作爲單元的子視圖,這將是您的背景視圖。然後,您可以將所有標籤或其他任何內容添加到該視圖的子視圖中。根據需要更改視圖背景顏色。

+0

但是表格單元格已經有了一個子視圖,意味着它是背景。我無法想象這項工作是最好的選擇。 –

+0

你知道爲什麼IB不會讓我添加一個uview作爲子表格的子視圖嗎? –

0

我認爲這可能是IB的一個bug。您可以將視圖添加到控制器底部的該欄中,然後將這些視圖連接到單元格的backgroundView和selectedBackgroundView屬性。但是,backgroundView的顏色不起作用,而selectedBackgroundView的顏色確實正常工作。如果您將代碼中的背景視圖添加到自定義表格視圖單元格併爲其指定背景顏色,那麼該方法可行。