UIActivityIndicator при загрузке данных в UITableView

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

1) В viewDidLoad я добавляю наблюдателя для прослушивания, когда загрузка данных выполняется, и после этого я вызываю loadDataFromWeb

2) loadDataFromWeb создает индикатор активности, добавляет его в качестве подвида в self.view, а затем загружает данные. Наконец, он отправляет уведомление (то самое, которое наблюдает viewDidLoad), чтобы указать, что процесс загрузки завершен.

3) Наконец, когда наблюдатель ловит сообщение от loadDataFromWeb, он вызывает removeLoadingScreen для удаления индикатора.

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

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

Спасибо


person Kasper Munck    schedule 24.07.2011    source источник
comment
Вы уверены, что выполняете свои сетевые коммуникации вне основного потока? Похоже, вы позволяете основному потоку выполнять загрузку, а это нет-нет :]   -  person Nils Munch    schedule 24.07.2011
comment
Нильс Мунк, ты совершенно прав :)   -  person Kasper Munck    schedule 24.07.2011


Ответы (1)


@Muncken взгляните на этот проект MBProgresHUD, это очень поможет вам выполнить загрузку в фоновом режиме (дополнительный поток, а не основной поток) и покажет индикатор активности над вашим просмотром -

https://github.com/matej/MBProgressHUD

person saadnib    schedule 24.07.2011
comment
saadnib Я посмотрю на это и потом вернусь. Спасибо! - person Kasper Munck; 24.07.2011
comment
Это выглядит великолепно, саадниб. Однако я немного борюсь с тем, как реализовать это в моем проекте. Потоки запускаются в IBAction в демонстрационном проекте. Где я должен их уволить? - person Kasper Munck; 24.07.2011
comment
Хорошо, я немного продвинулся здесь, но кажется, что я что-то упускаю. Загрузчик отображается так, как должен, и с помощью NSLog я вижу, что метод загрузчика работает правильно, но кажется, что данные не загружаются. Это мой видDidLoad: pastebin.com/LZkjRjdG - person Kasper Munck; 24.07.2011
comment
ваш viewDidLoad выглядит правильно. Не могли бы вы опубликовать свой код функции, в котором вы загружаете данные через HUD? - person saadnib; 25.07.2011
comment
Ага, я тоже должен как-то через HUD подгружать данные? Я не знал об этом. Во всяком случае, вот функция loadData: pastebin.com/LR8rmC7B - person Kasper Munck; 25.07.2011