IPhone - Показать индикатор ожидания - PullRequest
1 голос
/ 11 марта 2010

Что я пытаюсь сделать: Если пользователь нажимает кнопку, новый контроллер представления загружается и передается в контроллер навигации.

Новый контроллер представления выполняет некоторые сложные запросы к базе данных в своем методе ViedDidLoad, который заставляет несколько секунд загружать представление.

Я пытаюсь показать индикатор ожидания перед загрузкой представления.

Если я попытаюсь добавить UIActivityIndicatorView в качестве подпредставления моего начального представления непосредственно перед назначением нового представления, индикатор будет отображаться ПОСЛЕ того, как новый просмотр завершит загрузку ...

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

Ответы [ 2 ]

2 голосов
/ 11 марта 2010

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

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

Проблема в том, что все изменения пользовательского интерфейса должны выполняться в основном потоке приложений. Если что-то блокирует основной поток, тогда изменения пользовательского интерфейса не применяются (UIActivityIndicatorView в вашем случае не отображается).

Чтобы решить вашу проблему, вы должны запустить подпрограммы загрузки данных в фоновом потоке (например, используя метод -performSelectorInBackground:withObject), оставляя основной поток для пользовательского интерфейса.

...