IBAction - сделать что-то перед подключением к серверу

У меня есть IBAction, вызванный UIButton.

В этом IBAction я подключаю свое приложение к серверу, возвращая Plist.

В это время (между моими приложениями, подключающимися к серверу, и сервер возвращает этот Plist) я хочу показать UIActivityIndicator.

Проблема в том, что когда мой IBAction запускается, приложения сначала подключаются к серверу, а затем показывают UIActivityIndicator.

Мой IBAction в псевдокоде

- (IBAction) loginMe: (id) sender
{

// show activity indicator
// connect to server, and catch data

}

person Bernat    schedule 11.12.2011    source источник


Ответы (2)


Ваше действие «подключиться к серверу», скорее всего, синхронно. Действие «показать монитор активности» помечено неправильно. Что вы на самом деле делаете, так это «отмечаете монитор активности для отображения в следующий раз, когда происходит рисование».

Что вам нужно сделать, так это убедиться, что loginMe: возвращается, чтобы пользовательский интерфейс мог обновляться. Логика подключения к серверу должна продолжаться асинхронно. Обычно это делается с помощью NSURLConnection. Вы можете найти объяснение в Системное программирование загрузки URL Руководство.

person Rob Napier    schedule 11.12.2011

Также проверьте MBProgressHUD здесь:

https://github.com/jdg/MBProgressHUD

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

person kocodude    schedule 11.12.2011