2016-05-20 3 views
0

Когда я вызываю viewController.presentViewController, следующее предупреждение появляется, если другой контроллер уже представлен.Можно ли игнорировать «Предупреждение: пытаться представить ... во время презентации»?

Предупреждение: попытка представить ... пока выполняется презентация.

Если предполагаемое поведение ничего не должно делать, если презентация уже выполняется, безопасно ли просто игнорировать предупреждение?

viewController.presentViewController(...) 

Или я должен проверить перед представлением?

if viewController.presentedViewController == nil { 
    viewController.presentViewController(...) 
} 
+0

Где вы представляете контроллер вида? это то, что на самом деле загрузилось? –

+0

где вы написали это, покажите метод, в котором u называет это – Alok

+0

Очевидно, что небезопасно игнорировать любые предупреждения. – Desdenova

ответ

0

Не игнорировать .Because это означает, что вы пытаетесь представить вид перед текущим ViewController appearence.If вы проигнорировали это предупреждение, следующий вид не может в состоянии представить.

1.Check вы не предъявив никакого контроллер представление перед текущим видом нагрузок (во избежании viewDidLoad, viewWillAppear способов, чтобы представить контроллер NEXTVIEW) Поскольку он отсутствует иерархию ViewController

2.Try представить следующий вид использование контроллера ViewDidAppear вместо viewWillAppear и viewDidLoad

0

Нет, вы не должны игнорировать это предупреждение. На самом деле вы не должны игнорировать любые предупреждения, потому что предупреждение может создать проблемы в будущем. Поэтому лучше найти решение для этого предупреждения.

Не знаете ваше дело, что с того места, где вы представляете вас, VC и какие VC уже представлены. Но вам нужно было написать такой код, как сначала удалить текущий presenred controller, а затем попытаться представить новый контроллер.

Например,

Я объясняю один случай, когда вы нашли это предупреждение:

Предположим, что вы используете actionsheet и нажатием кнопки actionsheet вы представляете newVC и вы используете метод clickedButtonAtIndex делегата для представления newVC.

В этом случае вы получите это предупреждение и не сможете представить newVC, потому что actionsheet уже представлен.

Таким образом, решение этого дела: использовать didDismissWithButtonIndex метод делегирования actionsheet. Он вызывается, когда пользователь press button и actionsheet is dismissed.

Таким образом, вы не получите предупреждение, и в состоянии представить newVC

Как мудрый проверить ваш случай и посмотреть, VC уже представлен и представить newVC после успешной отклонять тока, представленные ОК.

Надеюсь, это поможет :)

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