iOS - двойной список макетов - PullRequest
1 голос
/ 15 августа 2010

Я занимаюсь разработкой приложения для iOS, и у меня возникли некоторые проблемы, связанные с решением проблемы.

Я использую два контроллера UITableViewController для отображения разных представлений одних и тех же данных.Один из них является главным списком, а другой содержит только элементы, помеченные как «избранные».Также элементы имеют переменную высоту, поэтому я использую «heightForRowAtIndexPath», чтобы указать высоту для каждого элемента.Проблема заключается в скорости, когда я переключаюсь с одного представления на другое, его необходимо обновить, чтобы отобразить изменения, сделанные в другом (отмечены как избранные / небезопасные).

Решение № 1 :

Перезагрузить данные каждый раз, когда табличное представление становится видимым.Это не очень хорошо работает, потому что, хотя данные отображаются с использованием отложенной загрузки, "heightForRowAtIndexPath" вызывается для каждого элемента перед загрузкой ЛЮБЫХ данных, и это происходит медленно.На моем iPhone 4 для загрузки списка из 300 элементов требуется около четырех секунд, даже если значения высоты кэшируются (узкое место применяет высоту, а не извлекает ее).

Решение # 2 :

Вручную манипулировать таблицами при внесении изменений.Я не пробовал это, но это, вероятно, будет глючить.Ваши мысли?

Решение # 3 :

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

Кто-нибудь знает простой способ показать два представления одних и тех же данных?

1 Ответ

1 голос
/ 15 августа 2010

Вы можете перезагрузить n строк с помощью reloadRowsAtIndexPaths: withRowAnimation. Я никогда не делал этого, но я думаю, что это там, потому что это быстрее, так что вы можете попробовать это.

Что касается heightForRow: я помню, я читал в документации Apple, что эта функция действительно снижает производительность. Возможно, вы могли бы взять максимальную высоту строк и установить ее в UITableView.rowHeight?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...