2011-10-17 9 views
6

dlaczego ustawienie koloru w kolorze UITableViewCell w willDisplayCell, ale nie w cellForRowAtIndexPath?dlaczego ustawienie koloru UITableViewCell działa w "willDisplayCell", ale nie w "cellForRowAtIndexPath"?

Uwagi:

  1. używam tego kodu, aby ustawić kolor tła komórki: [cell setBackgroundColor:[UIColor yellowColor]];
  2. prace kiedy kładę go w metodzie - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
  3. nie działa, jeśli I umieścić w w - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
+1

Czy możesz opublikować swoje implementacje 'tableView: willDisplayCell: forRowAtIndexPath:' i 'tableView: cellForRowAtIndexPath:'? – titaniumdecoy

Odpowiedz

7

doco dla UITableViewCell stwierdza, że ​​trzeba to zrobić w willDisplayCell: (wyciąg z klasy referen UITableViewCell nce poniżej). Podejrzewam, że ponieważ komórki tabeli mają widok treści i różne inne komponenty, które wydają się być "zarządzane" przez UIKit, to robią swoje rzeczy z kolorem tła po ustawieniu w komórceForRowAtIndexPath. Możesz także użyć właściwości 'backgroundView' komórki widoku tabeli, aby kontrolować jej tło.

dokumentacja fragment:

Uwaga: Jeśli chcesz zmienić kolor tła komórki (przez ustawienie koloru tła komórki za pośrednictwem właściwości backgroundColor deklarowanej przez UIView) musi to zrobić w Tableview: willDisplayCell: forRowAtIndexPath: metoda delegata, a nie tabela tableView: cellForRowAtIndexPath: źródła danych. Zmiany w kolorach tła komórek w widoku tabeli w stylu grupy mają wpływ na iOS 3.0, który różni się od poprzednich wersji systemu operacyjnego. Wpływa teraz na obszar wewnątrz zaokrąglonego prostokąta zamiast obszaru poza nim.

Powiązane problemy