Я изучаю, как обрабатывать иерархии диспетчера представлений с помощью раскадровки. У меня есть 2 ViewControllers: корень типа cwViewController (я понимаю, это «я» ниже) и второй тип WorkspaceViewController. Я получаю «Попытка представить во время презентации!» в результате этого кода.Переключатель контроллера простого вида: пытается представить во время презентации.
- (IBAction)nextView {
WorkspaceViewController *workspace = [[WorkspaceViewController alloc] initWithNibName:nil bundle:nil];
[self presentViewController:workspace animated:YES completion:NULL]; }
Ответ на How to present view controller properly? ближайший ответ, который может применяться, но не совсем подходит этот сценарий, потому что я не переключаясь между VCs, я просто представляя один, а затем отвергая его, чтобы отобразить оригинал.
Затем я попытался отклоняя текущий до представления второго, как это было предложено несколько ответов, например:
[self dismissViewControllerAnimated:NO completion:nil];
[self presentViewController:workspace animated:YES completion:NULL];
Но это только получает мне дополнительное предупреждение: Попытка отклонить от вида контроллера во время презентации или увольнение продолжается!
Выполнение некоторых других исследований я видел подобные проблемы были решены путем добавления блока
[self dismissViewControllerAnimated:YES...]
Но что здесь не поможет, потому что мое предупреждение происходит, прежде чем я даже добраться до точки, где я называю, что распускать метод , Дальнейшее знание о том, как должен обрабатываться порядок и иерархия представлений, будет большой помощью. Огромное спасибо.
Во-первых, если вы используете раскадровку, вам следует назначить init'ing WorkspaceViewController. Это не способ создать экземпляр контроллера просмотра из раскадровки. У вас есть какие-то переходы в раскадровке? – rdelmar
Возникает ли эта проблема из-за быстрого нажатия кнопки nextView более одного? – user523234
rdelmar, no Я еще не использовал segues. Не стесняйтесь указывать мне в правильном направлении. user523234 Это происходит при первом вызове следующего вида (он вызывается из наблюдателя уведомления). Спасибо всем. – roro