Cocoa Touch - отображайте индикатор активности при загрузке вида Uitabbar
-
12-10-2019 - |
Вопрос
У меня есть приложение Uitabbar с двумя представлениями, которые загружают большие объемы данных из Интернета в их методах "ViewWillAppear". Я хочу показать панель прогресса или индикатор деятельности во время получения этих данных, чтобы убедиться, что пользователь знает, что приложение не заморожено.
Я знаю, что об этом спрашивали ранее. Мне просто нужно некоторое разъяснение о том, что кажется скорее хорошее решение.
Я впитал код в примере. Первоначальный вопрос вопроса позже решил свою проблему, вставив поиск данных в другую «нить». Я понимаю концепцию тем, но я не знаю, как бы я мог это использовать.
С помощью исследований я обнаружил, что мне нужно перенести весь свой извлечение тяжелых данных в фоновую ветку, так как все обновление пользовательского интерфейса происходит в основной теме.
Если бы кто -то был бы таким любезным, чтобы привести пример для меня, я был бы очень благодарным. Я могу предоставить части своего существующего кода по мере необходимости.
Решение
Если вы используете 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 обрабатывает все многопоточные чтения, и вам не нужно беспокоиться. Теперь вы можете создать индикатор активности и отобразить его, и он будет работать, потому что основной поток пуст. :)