Какао Touch - отображать индикатор активности при загрузке UITabBar View - PullRequest
3 голосов
/ 21 декабря 2010

У меня есть приложение UITabBar с двумя представлениями, которые загружают большие объемы данных из Интернета в своих методах "viewWillAppear". Я хочу показать индикатор выполнения или индикатор активности во время получения этих данных, чтобы убедиться, что пользователь знает, что приложение не заморожено.

Мне известно, что об этом уже спрашивали. Мне просто нужно кое-что прояснить относительно того, что кажется довольно хорошим решением .

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

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

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

1 Ответ

3 голосов
/ 21 декабря 2010

Если вы используете NSURLConnection, он автоматически запускается в другом потоке.

в вашем viewDidLoad:

NSURLRequest *req = [NSURLRequest requestWithURL:theURL];
NSURLConnection *conn = [NSURLConnection connectionWithRequest:req delegate:self];

, тогда вам нужны некоторые пользовательские методы.Если вы введете -connection и нажмете Esc, вы увидите все различные методы, которые вы можете использовать.С этим вам понадобятся три:

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    // this is called when there is a response
        // if you're collecting data init your NSMutableData here
}

-(void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    // each time the connection downloads a 
        // packet of data it gets send here
        // so you can do [myData appendData:data];
} 

- (void) connectionDidFinishLoading:(NSURLConnection *)connection {
        // the connection has finished so you can 
        // do what you want with the data here
}

Это все, что вам нужно.NSURLConnection обрабатывает всю многопоточность, и вам не нужно беспокоиться.Теперь вы можете создать индикатор активности и отобразить его, и он будет работать, потому что основной поток пуст.:)

...