Я пытаюсь получить оживленный вид, отображаемый во время процесса поиска, однако он никогда не отображается.iPhone Busy View
То, что я пытаюсь добиться
- пользователь нажимает на кнопку поиска, как только они вошли в текст в UISearchBar.
- Введенный текст делегирован searchBarSearchButtonClicked.
- Показать «Занятый вид», который представляет собой UIView, содержащий UIActivityIndicatorView, чтобы указать, что поиск продолжается.
- Выполните поиск, который общается с веб-сайтом.
- При завершении поиска удалите «Занятый вид».
Что случилось
Процесс поиска работает нормально, с помощью отладчика я могу видеть его перемещения через функцию штрафа searchBarSearchButtonClicked однако «Busy View» никогда не появляется. Поиск занимает 2-3 секунды, поэтому в теории я должен увидеть, что мой «Занятый вид» появляется за эти 2-3 секунды.
Код Покушение 1 - Добавить и удалить "Busy View" из надтаблицы **
- (void)searchBarSearchButtonClicked:(UISearchBar *)activeSearchBar {
[activeSearchBar setShowsCancelButton:NO animated:YES];
[activeSearchBar resignFirstResponder];
[busyView activateSpinner]; //start the spinner spinning
[self.view addSubview:busyView]; //show the BusyView
Search *search = [[Search alloc]init];
results = [search doSearch:activeSearchBar.text];
[busyView deactivateSpinner]; //Stop the spinner spinning
[busyView removeFromSuperview]; //remove the BusyView
[search release]; search = nil;
}
Результаты попытки 1 - Она не появляется, однако, если я прокомментирую вызов removeFromSuperview, Busy View остается на экране.
Код Покушение 2 - с использованием анимации
- (void)searchBarSearchButtonClicked:(UISearchBar *)activeSearchBar {
[activeSearchBar setShowsCancelButton:NO animated:YES];
[activeSearchBar resignFirstResponder];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop)];
[busyView activateSpinner]; //start spinning the spinner
[self.view addSubview:busyView]; //show the busy view
[UIView commitAnimations];
Search *search = [[Search alloc]init];
results = [search doSearch:activeSearchBar.text];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop)];
[busyView deactivateSpinner]; //sets stops the spinner spinning
[busyView removeFromSuperview]; //remove the view
[UIView commitAnimations];
[search release]; search = nil;
}
Результаты попытки 2 - не видел "Busy View" появится
Thanks Kovpas, именно то, что я искал. Я создал статический класс с вызовом функции с потоковой загрузкой, который загружает представление, как вы говорите. – woot586