2013-03-15 4 views
3

У меня есть UITableView, который добавляет некоторые данные после перезагрузки UITableView в первый раз, но я не могу прокручивать вниз до новых данных, если я просматриваю, я вижу новые данные, но затем он прокручивает назад, и да, я перезагрузил свой UITableView, поэтому я проверил свой UITableView contentSize, и он не изменится после перезагрузки, но после того, как я перейду к другому представлению (UINavigationController) и вернусь, UITableView contentSize изменится, и он работает! Как я могу это исправить?UITableView не перезагружает contentSize

Спасибо!

+0

Вставить ur код тоже .. :) –

+0

Я предполагаю, что либо ваш '- numberOfRowsInSection:', либо '- numberOfSections' не обновляется корректно. Трудно сказать без кода, хотя ... – SethHB

+0

Они верны, но я уже исправил это с помощью insertIndexPaths: –

ответ

0

У меня была аналогичная проблема и она была решена с использованием той же техники, что и Daan (насколько я могу судить).

В моем случае я использовал статический UITableView, в котором сначала были скрыты некоторые из его строк и секций (путем установки соответствующих возвращаемых значений от numberOfSectionsInTableView: и tableView:numberOfRowsInSection:). Я нажимал VC на стек nav, чтобы собрать дополнительные данные, которые затем использовал бы, чтобы заполнить скрытые разделы tableview, вызвав reloadData в tableview, чтобы обновить его.

Это отлично работало в iOS7, но в iOS6 таблица contentSize.height никогда не изменялась от своего начального значения (218 баллов) до более высокого значения (504 балла), полученного из добавления новых разделов. Таким образом, вы не можете прокручивать содержимое в нижней части таблицы. Попытка принудительного использования contentSize не работала, так как она была немедленно восстановлена ​​до 218.

Изменение таблицы contentOffset таблицы позволило мне прокрутить до нижней части содержимого, но если вы нажмете UITextField в последней ячейке, он будет бить когда клавиатура была показана.

Наконец-то я смог придумать решение, которое работало как в iOS6, так и в iOS7 без проблем. Я использовал старый beginUpdates/вставлять и удалять строки и разделы/endUpdates методы UITableView, следующим образом:

// change the tableView's data source to reflect insertions/deletions 
[self.tableView beginUpdates]; 
[self.tableView deleteRowsAtIndexPaths:@[ [NSIndexPath indexPathForRow:1 inSection:0] ] withRowAnimation:UITableViewRowAnimationAutomatic]; 
[self.tableView insertSections:[NSIndexSet indexSetWithIndexesInRange:NSRangeFromString(@"1,3")] withRowAnimation:UITableViewRowAnimationAutomatic]; 
[self.tableView endUpdates]; 

Как вы можете видеть, в данном конкретном случае я должен был удалить строку из первого (и только) и добавьте три раздела в конец таблицы.

Смежные вопросы