Проблема с отображением индикатора активности при загрузке данных - PullRequest
0 голосов
/ 02 мая 2011

Мне кажется, что есть действительно простое решение моей проблемы, но до сих пор я добился небольшого успеха ... Я хочу загрузить свой исходный файл .xib (раньше выходя из заставки default.png), чтобыЯ могу отображать индикатор активности во время загрузки моих html-данных и установки полей текстовой метки, созданных моим xib-файлом.

К сожалению, когда я выполняю следующий код ниже, я отображаю свое изображение default.png, пока вседанные загружаются с каждого веб-сайта ... Что я могу изменить, чтобы сначала отобразить мой mainView, затем запустить индикатор активности, загрузить мои html-данные и установить текстовые метки в моем mainView?

@implementation MainViewController
- (void)viewDidLoad {
[super viewDidLoad];

[activityIndicator startAnimating];

[self runTimer];

}

- (void)viewDidAppearBOOL)animated {

[super viewDidAppear:animated];

[self loadHTMLData1];

[self loadHTMLData2];

[self loadHTMLData3];

[self loadHTMLData4];

[activityIndicator stopAnimating];

}
...

1 Ответ

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

Это все связано с тем, как iOS обновляет пользовательский интерфейс. Когда вы звоните

[activityIndicator startAnimating];

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

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

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

Взгляните на NSOperation NSOperationQueue ) - это позволит вам ставить в очередь отдельные задачи, которые iOS будет выполнять в фоновом режиме для вас. затем, когда они будут готовы, вы можете снова обновить дисплей и отключить индикатор активности.

Есть Обучающие программы NSOperationQueue всего google :)

Надеюсь, это поможет.

...