Что-то странное происходит с моим табличным просмотром при изменении данных. У меня есть что-то вроде этого:Почему моя [tableview reloadData] выполняется слишком поздно?
// fadeout existing data
... // change data (new values for the cells are blank)
for{ // loop all rows
[TableView reloadRowsAtIndexPaths: withRowAnimation:]; // smooth fade out
}
// add one new row to the table
... // change data (just add one new row but leave the cells empty)
[TableView reloadData] // reload all of the data (new row should be added)
... // change data (just add values to the existing cells)
for{ // loop all rows
[TableView reloadRowsAtIndexPaths: withRowAnimation:]; // smooth fade in
}
В теории, по крайней мере, я думаю, это должно сработать. Но у меня были некоторые сбои, поэтому я добавил NSLogs в циклы for и в: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
, поэтому я заметил, что мой [tableView reloadData] выполняется после первого ряда затухания в цикле! @ #
Я думал о том, чтобы сделать какой-то вид задержки между reloadData и затуханием в цикле, но я не хочу заставить его работать, я хочу, чтобы он работал правильно.
- Есть ли лучший способ добиться того, что я пытаюсь сделать?
- Могу ли я динамически добавлять одну строку в нижней части таблицы без вызова метода reloadData?
Спасибо.
Вам не нужно выполнять цикл for() над каждой строкой, чтобы перезагрузить его. reloadRowsAtIndexPaths принимает массив указательных путей, поэтому просто создайте этот массив из всех ваших строк и сделайте это с одной перезагрузкой. – jsd