Значение предупреждения "во время презентации!"
Когда я интегрирую Instagram в свой проект. Я получаю image
из UIImagePickerController
, и после этого я хочу отправить его в Instagram. Но когда я отправляю image
в Instagram на UIDocumentInteractionController
делегат метод presentOptionsMenuFromRect:inView: animated:
как этот
[documentInteractionController presentOptionsMenuFromRect:CGRectZero inView:self.view animated:YES];
Предупреждение приходит Предупреждение. Попытайтесь представить < _UIDocumentActivityViewController: 0x7584780 > во время презентации!
Приложение не сбой. Но я не получаю проблему. Почему это предупреждение приходит и что это значит. Я искал в Интернете и читал вопросы об этом, но не получил никакого ответа. Помогите мне!
Ответы
Ответ 1
// Breaks
[viewController1 dismissViewControllerAnimated:YES completion:NULL];
[self presentViewController:viewController2 animated:YES completion:NULL];
// Does not break
[viewController1 dismissViewControllerAnimated:YES completion:^{
[self presentViewController:viewController2 animated:YES completion:NULL];
}];
Версия вышеприведенного кода Swift 3 будет выглядеть так:
// Breaks
viewController1.dismiss(animated: true)
present(viewController2, animated: true)
// Does not break
viewController1.dismiss(animated: true) {
present(viewController2, animated: true)
}
Обратите внимание на использование обработчика завершения во втором примере выше.
Он представляет только viewController2
после того, как viewController1
был полностью уволен.
Ответ 2
Это означает, что вы представляете или отклоняете UIImagePickerController
и пытаетесь представить UIDocumentInteractionController
, в то время как первая презентация или увольнение не завершена.
Ответ 3
Это означает, что вы одновременно представляете 2 ViewControllers. Вызовите своего делегата после завершения первой презентации.
Ответ 4
Это также может произойти, если у вас есть (например) UIButton, подключенный к IBAction, чтобы представить ViewController, а также создать segue в Storyboard от кнопки до целевого ViewController.
Если бы это произошло, когда я забыл удалить соединение IBAction из UIButton, когда я перемещал некоторые взаимодействия.
Удаление соединения IBAction или segue разрешит его.
Ответ 5
Как уже было сказано, это означает, что вы одновременно пытаетесь представить 2 модальных окна или popovers. Но в моем случае я не видел никакого модального окна или popover, когда получаю это сообщение.
Причиной ошибки в моем случае было следующее. Когда я впервые вызвал popover, чтобы показать его, это была еще одна ошибка, которая препятствовала появлению popover, но она каким-то образом продолжает оставаться в "представленном" состоянии. Все последующие попытки показать popover не удались с ошибкой во время выполнения "пока выполняется презентация!".
Итак, если вы столкнулись с той же ситуацией, просмотрите журнал и попробуйте найти первую ошибку, начиная с *** WebKit discarded an uncaught exception in the...
.
Надеюсь, что это сэкономит время.
Ответ 6
Для тех, кому нужна/нужна версия с быстрым 3, здесь
viewController1.dismiss(animated: true, completion: {
self.present(self.viewController1, animated: true)
})
viewController1 - это диспетчер представлений, который вы хотите представить.
Ответ 7
Попробуйте..
double delayInSeconds = 1.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[self performSegueWithIdentifier:@"Identifier" sender:self];
});
Ответ 8
Я получил это сообщение, потому что я скопировал прикрепленную кнопку, которая уже отправила связанное с ней событие, и я продолжал создавать другое соединение, поскольку новая кнопка должна была открыть новое представление.
Итак, технически я пытался одновременно открыть 2 представления.