2010-04-09 17 views
12

UITableViewCells etiket arka planını ayarlamak için çalışıyorum ve kesinlikle hiçbir şey yapmaz. Bunu yapmanın başka bir yolu var mı diye merak ediyorum, bu yüzden soruyorum!textLabel.backgroundColor on UITableViewCell çalışmıyor

bu çalıştı: başka bir şey

cell.textLabel.backgroundColor = [UIColor redColor]; 
cell.backgroundColor = [UIColor redColor]; 

Ve çalışmıyor?

Teşekkürler!

cevap

41

Bunu, cellForRowAtIndexPath içinde denediğinizi varsayalım.

UITableViewCell class reference göre:

Not: Eğer ( UIView tarafından açıklanan backgroundColor özelliği aracılığıyla bir hücrenin arka plan rengi ayarlayarak) bir hücrenin arka plan rengini değiştirmek istiyorsanız sizi tableView: willDisplayCell: forRowAtIndexPath: tableView: cellForRowAtIndexPath: veri kaynağında değil.

Yani bu yapın:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    cell.backgroundColor = [UIColor redColor]; //must do here in willDisplayCell 
    cell.textLabel.backgroundColor = [UIColor redColor]; //must do here in willDisplayCell 
    cell.textLabel.textColor = [UIColor yellowColor]; //can do here OR in cellForRowAtIndexPath 
} 

hücre ekran üzerinde daha sıkı denetim gerekiyorsa, kolay bir yol IB bunu tasarlamak ve cellForRowAtIndexPath içinde uç onu yüklemektir. Tablo Görünümü Programlama Kılavuzu'nda this page'daki "Nib Dosyalarından Özel Tablo Görünüm Hücreleri Yükleme" bölümüne bakın.

+1

Harika, bunun için her yere bakıyordum. Teşekkürler –

0

IOS 9.3 güncelleştirmesi. Bu gerçekten IOS 9.3 kullanarak cellForRowAtIndexPath içinde iyi çalışıyor. Ayrıca Not: Tüm hücrenin kullanım rengini değiştirmek için:

cell.contentView.backgroundColor = [UIColor redColor];