Получение этого предупреждения "во время презентации" (Xcode)
В проекте, который я пишу, я получаю эту ошибку, когда представляю новый контроллер представления:
Попытайтесь представить.... во время презентации!
Я думаю, что это происходит, потому что я сначала представляю новый контроллер представления, а затем в этом представлении я представляю другой контроллер представления.
- (void)loadLabelSettings {
LabelSettingsViewController *labelSettings =
[[LabelSettingsViewController alloc] init];
labelSettings.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:labelSettings animated:YES completion:nil];
}
Программа не аварийно завершает работу или что-либо еще, она работает нормально, и в моем коде нет ошибок или предупреждений. Итак, мой вопрос: это то, что меня должно волновать, и если да, то как мне это решить?
Заранее спасибо:)
3 ответа
Это, как вы сказали, возможно, вызвано одновременным представлением двух контроллеров представления. Дождитесь представления второго контроллера представления, пока первый не будет полностью представлен. Хорошее место было бы сделать это в viewDidAppear
,
В моем случае я подключил UIViewControllers
UIButton
со вторым UIViewController
по UIStoryboardSegue
, Внутри моего кода это называется программно во второй раз. Так нажимая UIButton
вызвал представление указанного представления два раза.
Я понял свою проблему, поскольку Скотт написал, что это было, потому что я представлял 2 контроллера представления одновременно. Это произошло потому, что у меня была кнопка с UILongPressGestureRecognizer, которая показывала новый контроллер представления. Проблема заключалась в том, что при использовании UILongPressGestureRecognizer вызываемый метод вызывается дважды. Сначала, когда обнаружено долгое нажатие и когда ваш палец отпущен с экрана. Таким образом, метод presentViewController одного и того же представления вызывался дважды. Я исправил это, реагируя только на первое обнаружение. Вот код:
- (void)loadButtonSettings:(UILongPressGestureRecognizer *)recognizer {
if (recognizer.state == UIGestureRecognizerStateBegan) {
}
}