2013-11-09 1 views
1

Мой рабочий стол, который использовался для плавной перезагрузки разделов и строк, теперь работает медленно при работе на iOS 7. Когда я перезагружаю всю таблицу таблицы, она загружается мгновенно, но вызывает reloadRowsAtIndexPaths или reloadSections (с помощью UITableViewRowAnimationNone) занимает около секунды, чтобы завершить.iOS7 UITableview slow on reloading section/row

Я пока не использую AutoLayout для этого раздела приложения. Ячейки размещаются в отдельных файлах Xib с соответствующими пользовательскими классами

+0

Вы должны профилировать приложение с помощью инструментов и посмотреть, что занимает процессорное время во время перезагрузки таблицы. Обновите свой вопрос и давайте посмотрим. –

+0

Спасибо Лео за помощь, я сделаю. Мне понадобится немного времени. – x89a10

+0

Просто опубликуйте комментарий, когда вы редактируете, поэтому я вижу, что есть что-то новое. –

ответ

1

У вас есть автоматическое размещение для просмотра сотовой ячейки? Вы перезагружаете представление таблицы, когда оно не видно (например, когда контроллер подробного представления нажат)? Это похоже на известную ошибку. См. Это question/answer. Отчет об ошибке Apple: rdar: // 15175803

В принципе, у вас есть многоуровневое решение, которое не идеально, но даст вам удовлетворительные результаты. Во-первых, это всегда верно, оптимизируйте свои ограничения в ячейке представления таблицы. Если у вас есть ограничения, измененные динамически, убедитесь, что вы не вызываете ненужных макетов и рисунков. Во-вторых, не обновляйте представление таблицы, если оно не видно. Это похоже на хак, но другого варианта нет (ну, есть один, но это связано с отключением автоматического макета, что совсем не оптимально, поэтому давайте проигнорируем). Вы можете проверить в своем контроллере вида, если свойство tableView.window равно nil, что указывает на скрытие вида таблицы. Если он не скрыт, обновите его нормально, но если это так, не обновляйте. Просто установите флаг, который была обновлена. На странице viewWillAppear: звоните reloadData, чтобы обновить таблицу. Вы можете сохранить выбор, запросив представление таблицы для выбранных путей индекса и выбрав их снова после перезагрузки данных.

+0

Фактически я пока не использую AutoLayout для этого раздела приложения. Ячейки размещаются в отдельных файлах Xib с соответствующими пользовательскими классами. – x89a10