Пользователи сообщений при большой загрузке таблицы - PullRequest
0 голосов
/ 20 мая 2011

Я обрабатываю несколько крупных RSS-каналов и отображаю результаты в виде таблицы. Обработка начинается после того, как пользователь нажимает на соответствующую вкладку. Все работает хорошо, но поскольку обработка занимает пару секунд, NIB и таблица не загружаются до тех пор, пока не завершится обработка, и похоже, что iPhone не работает. Я добавил индикатор активности в NIB, но поскольку он не загружается до тех пор, пока таблица не готова к отображению, он кажется слишком поздно, чтобы его можно было использовать.

У кого-нибудь есть идеи, как отобразить сообщение пользователю, пока таблица строит / загружает? Я попытался сначала загрузить UIView и добавить таблицу в качестве подпредставления, но, опять же, кажется, что оба загружаются только после того, как таблица готова.

Руководство ценится.

1 Ответ

1 голос
/ 20 мая 2011

Трудно догадаться, что происходит из вашего описания, но похоже, что ваши вызовы не асинхронны.Вот что вы должны делать в своем коде:

  1. Сделайте все вызовы асинхронными.Вы сказали, что ваш телефон отключается.Звучит так, будто ваши запросы и ответы происходят в главном потоке.Есть много библиотек, которые вы можете использовать для обработки асинхронных вызовов. ASIHTTPRequest для одного примера ....

  2. Не ждите поступления данных перед отображением tableView.Это принцип разработки, при котором пользователь загружает как можно больше пользовательского интерфейса, чтобы пользователю было на что посмотреть, пока ваши данные загружаются в фоновом режиме.Что вы должны сделать, это инициализировать NSMutableArray для хранения данных.Первоначально этот массив не будет содержать объектов.Это массив, который вы используете в своих методах источника данных: используйте размер массива для numberOfRowsInSection и используйте объекты массива в cellForRowAtIndexPath.Как только ваш RSS-поток XML поступит и проанализируется, сохраните его в своих массивах и вызовите [tableView reloadData].Таким образом, вы не оставляете своих пользователей глядя на пустой экран.(Еще одна хорошая практика, когда размер массива равен нулю, покажите одну ячейку в табличном представлении, которая говорит, что «данные загружаются» или что-то в этом роде).

  3. Когда вы впервые инициализируете и загрузите свою таблицуи затем запустите эти запросы RSS-ленты, и вы увидите представление индикатора активности в tableView.Прекратите анимировать индикатор, когда поступают данные RSS и ваш tableView перезагружается.

Это стандартные шаги, которые следует соблюдать при отображении нелокальных данных в виде таблицы.Обеспечивает бесперебойное взаимодействие с пользователем.

Как я уже говорил, из вашего вопроса видно, что ваши вызовы не являются асинхронными .Если я ошибаюсь, поправьте меня, и давайте возьмем это оттуда ...

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