Привет: У меня есть UITableView
, который загружается из файла XIB, используя следующую строку:UITableView медленно загружается и повторно загружает ячеек
rulebookEditView = [[[NSBundle mainBundle] loadNibNamed:@"Rulebooks" owner:self options:nil] firstObject];
Вид затем добавляют как подвид, и функция режима представления класс, который регистрирует ячейки и загружает табличный вид:
[self.settingsTableView registerNib:[UINib nibWithNibName:@"RulebookEditorCell" bundle:nil] forCellReuseIdentifier:@"RulebookEditorCell"];
[self.settingsTableView registerNib:[UINib nibWithNibName:@"RulebookEditorXLCell" bundle:nil] forCellReuseIdentifier:@"RulebookEditorXLCell"];
//Get the data etc.
[self.settingsTableView reloadData];
Теперь вот странная часть. Я ввел журнал в функцию cellForRowAtIndexPath:
, чтобы зарегистрировать значение indexPath.row
. Это в конечном итоге протоколирование следующее (я конденсируется его):
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
0 0 1 1 2 2 3 3 4 4 5 5 6 6
Я понятия не имею, почему это было бы нагрузить 21 клетки затем сразу же загрузить первый 7 дважды.
Следует отметить, что на экране сразу отображаются 7 ячеек. Есть 21 ячейка, все в 1 разделе.
Я поставил точку останова на reloadData
, и это действительно называется только один раз моим кодом.
Я предполагаю, что registerNib:
заставляет просмотр таблицы обновляться, а также загружает его из файла XIB ...? Если да, есть ли способ предотвратить это или улучшить производительность? Потому что это вызывает около 500 мс задержки основного потока.
Спасибо!
Это классическая ошибка - heightForRow никогда не следует вызывать cellForRow, но похоже, что это часто делается. –