2012-01-12 10 views
6

yüzdencell.backgroundColor: cellForRowAtIndexPath Ben kırmızı ile belli tablo satırını renklendirmek için çalışıyorum

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
... init Code here 
cell.backgroundColor = [UIColor redColor]; 
cell.accessoryType = UITableViewCellAccessoryCheckmark; 
} 
aksesuar Onay işareti belirir

ancak kırmızı renk ekleyerek çalıştı. Çalışır willDisplayCell: tableView yerleştirerek o

sonradan buldum. Bu tasarımla mı? neden ben zaten hücreyi başlatılıyor anında ayarlanan değeri görmezden geliyor?

cevap

3

hücrenin bakış tableView:willDisplayCell yılında özelleştirilmiştir. Yani, soruyu cevaplamak için, evet tasarım gereğidir. Aksesuar görüş ve hücrenin contentView ait subviews cellForRowAtIndexPath atanan/değiştirilmesi gerekir.

bir tablo görünümü böylelikle görüntülenmeden önce hücre nesnesini özelleştirmek için temsilci izin veren bir satır çizmek için hücre kullanır hemen önce onun temsilci bu mesajı gönderir: tableView:willDisplayCell:forRowAtIndexPath: belgelenmesi itibaren

. Bu yöntem, temsilci seçme ve arka plan rengi gibi tablo görünümünde daha önce ayarlanmış durum tabanlı özellikleri geçersiz kılma şansı verir. Temsilci döndükten sonra, tablo görünümü yalnızca alfa ve çerçeve özelliklerini ayarlar ve sonra yalnızca satırları içeri veya dışarı kayarken hareket ettirirken ayarlar.

1

FYI, Ravi'nin cevabı doğrudur, ancak uygulamanızı basitleştirmek isterseniz, aynı etkiyi elde etmek için hücrenin contentView arka plan rengini de ayarlayabilirsiniz.

cell.contentView.backgroundColor = [UIColor redColor];

Bu değil belgelenmiş bir çözümdür, ama şu çalışacaktır:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
... init Code here 
    cell.contentView.backgroundColor = [UIColor redColor]; 
    cell.accessoryType = UITableViewCellAccessoryCheckmark; 
} 
İlgili konular