Лучший способ сделать пейджинг в UITableView - PullRequest
3 голосов
/ 31 августа 2011

Я работаю над приложением по недвижимости.Приложение запрашивает сервер подачи данных после того, как пользователь заполняет форму (минимальные номера, цена и т. Д.), И получает строку json с определенными парами ключ / значение (имя свойства, адрес свойства, долгота / широта, цена и т. Д.).).

Я пытаюсь разрешить пользователю просматривать список в UITableView, даже если фид содержит длинный список элементов, не перегружая iphone пользователя (количество возвращаемых элементов неизвестна до того, как запрос будет выполнен, поэтому приложение должно обработать это) ... Что бы вы предложили мне для подкачки?

Спасибо заранее,

Стефан

Ответы [ 3 ]

11 голосов
/ 31 августа 2011

Если ваш метод tableView:cellForRowAtIndexPath: написан правильно с использованием dequeueReusableCellWithIdentifier: (и вы не используете tableView:heightForRowAtIndexPath:, или он очень быстрый), UITableView сможет обрабатывать тысячи строк, не перегружая устройство. Вам просто нужно заботиться о хранении ваших необработанных данных.

Что касается вашей проблемы незнания количества строк до тех пор, пока запрос не будет завершен, это достаточно легко обойти. Когда вы получите больше строк из запроса, просто используйте UITableView insertRowsAtIndexPaths:withRowAnimation:, чтобы сообщить табличному представлению о наличии большего количества строк (и убедитесь, что ваши tableView:numberOfRowsInSection: и tableView:cellForRowAtIndexPath: будут отражать эти новые строки).

Если вы также хотите дождаться прокрутки пользователем до конца текущего списка, прежде чем продолжить запрос, обратите внимание, что UITableView является подклассом UIScrollView, а UITableViewDelegate реализует UIScrollViewDelegate. Так что просто используйте scrollViewDidScroll: на вашем UITableViewDelegate, чтобы узнать, когда пользователь прокручивает, а затем проверьте contentOffset табличного представления, чтобы определить, прокрутили ли они достаточно далеко, чтобы вы хотели загрузить больше данных.

0 голосов
/ 11 марта 2013

Ну, если кому-то интересно пейджинг с помощью кнопок, то я нашел этот пост полезным http://www.mindyourcode.com/ios/iphone/pagination-in-uitableview-with-next-previous-buttons/, может быть, для некоторых других это будет полезно

0 голосов
/ 31 августа 2011

Какое среднее количество предметов может иметь человек?10, 100, 1000?У него есть изображения или только данные?Как правило, я бы проголосовал за отсутствие нумерации страниц - просто загружайте больше по мере прокрутки вниз и пытайтесь загрузить все из них в самый первый раз, если их не слишком много.Вы также можете кэшировать их на устройстве и добавить функциональность «тянуть, чтобы обновить», таким образом вы улучшите работу в автономном режиме.

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