#iphone #ios #uitableview
#iPhone #iOS #uitableview
Вопрос:
почему настройка UITableViewCell
цвета работает, willDisplayCell
но не в cellForRowAtIndexPath
?
Примечания:
- Я использую этот код для установки цвета фона ячейки:
[cell setBackgroundColor:[UIColor yellowColor]];
- работает, когда я помещаю его в метод
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
- не работает, если я вставляю в
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
Комментарии:
1. Можете ли вы опубликовать свои реализации
tableView:willDisplayCell:forRowAtIndexPath:
иtableView: cellForRowAtIndexPath:
?
Ответ №1:
В UITableViewCell
документе указано, что вам нужно это сделать willDisplayCell:
(выдержка из UITableViewCell
ссылки на класс ниже). Я подозреваю, что, поскольку в ячейках таблицы есть представление содержимого и различные другие компоненты, которые, похоже, «управляются» UIKit
, он делает свое дело с цветом фона после его установки cellForRowAtIndexPath
. Вы также можете использовать свойство backgroundView ячейки табличного представления для управления ее фоном.
выдержка из документации:
Примечание: Если вы хотите изменить цвет фона ячейки (установив цвет фона ячейки с помощью backgroundColor
свойства, объявленного UIView
), вы должны сделать это в tableView:willDisplayCell:forRowAtIndexPath:
методе делегата, а не в tableView:cellForRowAtIndexPath:
источнике данных. Изменения фоновых цветов ячеек в табличном представлении в стиле группы имеют эффект в iOS 3.0, который отличается от предыдущих версий операционной системы. Теперь это влияет на область внутри закругленного прямоугольника, а не на область за его пределами.
Ответ №2:
Простыми словами, cellForRowAtIndex
будет определять поведение UIObject
ячейки in (например, метки, кнопка, вид). (т.е. Цвет фона, стиль шрифта, цвет шрифта). Если вы хотите изменить внешний вид ячейки, это можно сделать только в willDisplayCell:forRowAtIndexPath:
Дополнительные пояснения здесь: https://jobs.zalando.com/tech/blog/proper-use-of-cellforrowatindexpath-and-willdisplaycell/?gh_src=4n3gxh1