Intereting Posts
Приложение с навигационным управлением TabBar и методом TableView didselectrowatindexpath Пользовательский делегат iOS 6 с использованием ARC не работает Можете ли вы использовать NSPredicate для размещения выбранного элемента перед всеми остальными при использовании NSSortDescriptor каковы шаги, необходимые для изменения пустого приложения в оконном приложении в MonoTouch с использованием Xcode 4.2? ошибка потока с базовыми данными iOS (ObjC) PromiseKit – обещание возврата в рамках обещания Сортировка NSDictionary Архитектура iOS: корпоративный сервер UICollectionView viewForSupplementaryElementOfKind вызывается три раза Не удается создать / запустить приложение iOS с помощью Xcode, однако 'cordova run ios' отлично работает Как перебирать ячейки в UITableView, которые еще не были видимы? Разбирайте файл .plist iOS в WP7 Почему ARC не работает правильно, когда прямо присваивает объект свойству Нажатие UIViewController – UINavigationController, не изменяя размер изображения должным образом UIImage от url занимает много времени, чтобы быстро загрузить

Прогресс HUD не отображается на правильном контроллере View

Я использую класс SVProgressHUD ( https://github.com/samvermette/SVProgressHUD ), и у меня есть главный контроллер просмотра с кнопкой на нем, которая подключается с помощью нажатия segue с другим контроллером представления. В контроллере Main View я добавил этот код:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { [SVProgressHUD showWithStatus:@"Loading"]; NSLog(@"segue test"); } 

Я хочу, чтобы до того, как загрузился другой контроллер View, HUD нужно отобразить. Если я запустил свою программу, она сначала распечатывает «тест segue» NSLog, и после этого он выводит NSLogs из другого контроллера просмотра, проблема в том, что HUD не работает непосредственно при нажатии кнопки, она показывает, когда другая Контроллер просмотра загружен …

Это то, что у меня есть сейчас:

http://i47.tinypic.com/jphh0n.png

http://i50.tinypic.com/vzx16a.png

Это то, что мне нужно:

http://i45.tinypic.com/2vcb1aw.png

И, несмотря на то, что синий экран загружается, «Идет» «Идет» ИДУ должен исчезнуть.

Вместо подключения segue непосредственно от кнопки вы можете подключить segue из класса контроллера вида. Убедитесь, что вы дали segue имя, потому что вам нужно это имя, чтобы вы могли его назвать позже.

Затем вы можете сначала подключить свою кнопку к IBAction , которая сначала загрузит то, что вы загружаете. По завершении загрузки вы можете отменить прогресс HUD и вызвать segue.

 - (IBAction)loadStuff:(id)sender { [SVProgressHUD showWithStatus:@"Loading"]; [self retrieveStuff]; } - (void)retrieveStuff { // I'll assume you are making a NSURLConnection to a web service here, and you are using the "old" methods instead of +[NSURLConnection sendAsynchronousRequest...] NSURLConnection *connection = [NSURLConnection connectionWith...]; } - (void)connectionDidFinishLoading:(NSURLConnection *)connection { // Do stuff with what you have retrieved here [SVProgressHUD dismiss]; [self performSegueWithIdentifier:@"PushSegueToBlueScreen" sender:nil]; } 

Если вы просто хотите сначала смоделировать то, что произойдет, вы можете попробовать следующее:

 - (IBAction)loadStuff:(id)sender { [SVProgressHUD showWithStatus:@"Loading"]; [self retrieveStuff]; } - (void)retrieveStuff { [NSTimer scheduledTimerWithTimeInterval:2 // seconds target:self selector:@selector(hideProgressHUDAndPush) userInfo:nil repeats:NO]; } - (void)hideProgressHUDAndPush { // Do stuff with what you have retrieved here [SVProgressHUD dismiss]; [self performSegueWithIdentifier:@"PushSegueToBlueScreen" sender:nil]; } 

EDIT: вы можете попробовать этот блок GCD для загрузки одного изображения. Я думаю, вы можете просто возиться с этим, чтобы поддерживать загрузку нескольких изображений.

 - (IBAction)loadStuff:(id)sender { [SVProgressHUD showWithStatus:@"Loading"]; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // ... download image here [UIImagePNGRepresentation(image) writeToFile:path atomically:YES]; dispatch_sync(dispatch_get_main_queue(), ^{ [SVProgressHUD dismiss]; [self performSegueWithIdentifier:@"PushSegueToBlueScreen" sender:nil]; }); }); }