2015-10-20 2 views
0

Вызов [self presentViewController] по заказу UIAlertController немедленно загружает оповещение. Есть ли способ отложить его презентацию?presentViewController с задержкой

[self presentViewController:alert animated:YES completion:nil]; 
+0

Вы имеете в виду UIAlertController? Или UIAlertView? И вы имеете в виду презентацию предупреждения или презентации другого viewController из действия в рамках предупреждения? –

+0

@JimTierney Я имею в виду UIAlertController. Вы меня проголосовали? – Eric

+0

нет нисходящего от меня. Рад, что вы его отсортировали, хотя –

ответ

3

Вы можете использовать НОД или или performSelector:withObject:afterDelay:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
    [self presentViewController:alert animated:YES completion:nil]; 
}); 

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

Вы также можете проверить this answer

+0

'performSelector: withObject: afterDelay:' не работает вообще. GCD работает, но предупреждение от UIAlertController не появляется в приложении. Это потому, что предупреждение нужно вызвать в основном потоке? – Eric

+0

Да, он должен быть вызван из главного потока, иначе вы оставите себя открытым для странного/неопределенного поведения. – darren102

+0

Да, убедитесь, что ваш код работает в основном потоке. Я обновил код – manman

1

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

+0

Спасибо, @Raesu. Я ничего не жду, чтобы скачать. Ключ должен отображать предупреждение, обновляющее монетоприемник пользователя с монетами, заработанными на стенде предложения. Обратный вызов быстро загорается, поэтому нет необходимости ждать, если, конечно, чего-то не хватает. – Eric

+0

Получил это. В ответе @ manman я фактически предпочитаю 'performSelector: ... afterDelay:' method, clean code. – Raesu

+0

Должны ли селекторы быть либо методы, функции, либо действия, правильно? Alert - это экземпляр класса UIAlertViewController. Можно ли назвать ivar как селектор? – Eric

Смежные вопросы