2012-01-13 50 views
6

我有一個應用程序故事板。在一個場景中,我有一個靜態單元格內容的tableview。是否可以將背景選定的顏色更改爲默認選項(藍色和灰色)之外的另一種顏色?如何更改背景所選顏色故事板靜態單元格

我知道如果我可以更改forRowAtIndexPath中的單元格背景顏色,但在這種情況下,我沒有任何來自tableview的數據源函數。我相信這是可能的IB或其他功能,我可以修改...

在此先感謝!

回答

8

我有同樣的問題。該解決方案有兩部分:

1)獲取單元格,看看this。 2)改變背景顏色:你必須創建一個你所需要的背景顏色的UIView,並將其設置爲電池

舉例的selectedBackgroundView,我用這個代碼中的UITableViewController的viewDidLoad中:

UIView *backgroundSelectedCell = [[UIView alloc] init]; 
[backgroundSelectedCell setBackgroundColor:[UIColor colorWithRed:130/256.0 green:169/256.0 blue:171/256.0 alpha:1.0]]; 

for (int section = 0; section < [self.tableView numberOfSections]; section++) 
    for (int row = 0; row < [self.tableView numberOfRowsInSection:section]; row++) 
    { 
     NSIndexPath* cellPath = [NSIndexPath indexPathForRow:row inSection:section]; 
     UITableViewCell* cell = [self.tableView cellForRowAtIndexPath:cellPath]; 

     [cell setSelectedBackgroundView:backgroundSelectedCell]; 
    } 
+0

謝謝Carlos ...你是西班牙人嗎? – Camacho 2012-04-25 16:37:33

+0

這種方法可能有效。我真的不知道當你有一堆單元格和表格滾動時它會如何表現。在動態單元中,它們在需要時被緩存和丟棄。在didLoad方法期間更改背景將確保第一個呈現單元格具有正確的背景顏色,但可能無法確保滾動單元格將保留該引用。無論如何,它需要編碼,靜態單元的目的是使用,而不需要編碼...我發佈了一個答案,可以讓你完成,而無需編碼。 – 2012-09-21 00:41:48

18

您不需要編寫任何一行代碼即可完成此操作。您可以使用故事板完成所有操作。只要做到這一點:

  1. 一個UIView添加到您的UITableViewCell並將其鏈接到單元格的selectedBackgroundView特性(查找此屬性,則需要從"New Reference Outlet"拖行並釋放它在所需UITableViewCell
  2. 更改UIView的顏色爲選中狀態

你可以做同樣的事情與backgroundView屬性所需的顏色。此外,您可以使用UIImageView來使用圖像,而不是使用UIView的單色背景。

下面是使用自定義的UIViewController,而不是一個UITableViewController一個示例文件,但它工作在兩個:http://uxp.com.br/downloads/CustomCell.zip

+0

偉大的方法!這是與故事板一起工作的方式,我們許多人都不熟悉,以及他們如何被認爲與之合作。謝謝! – brainray 2012-10-23 23:14:55

+2

你是如何做到這一點而不會出現這個錯誤的? HTTP://計算器。com/questions/13090338/runtime-error-setting-backroundview-property-of-uitableviewcell -in-storyboard – 2012-10-31 03:24:10

+0

我沒有使用AutoLayout。也許這就是爲什麼我沒有得到任何錯誤。但它看起來像一個bug。你有沒有填補蘋果內的錯誤? – 2012-10-31 18:58:08

-2

這裏是我們這些X-代碼5 +使用自動佈局的解決方案...

對於靜態單元格,你可以改變背景顏色,但它不起作用。但是,每個單獨的單元格都將在IB中自動具有內容視圖。如果我們更改此內容視圖的背景,它將更改單元格背景。

只需添加到@Leandro Alves的答案,所以我們不必將額外的UIViews拖到我們的項目!

+0

這不會改變選定的背景顏色。 – phatmann 2015-05-01 18:03:20

相關問題