UINavigationController показывает черный экран после нажатия на вид - PullRequest
2 голосов
/ 24 ноября 2011

У меня есть приложение раскадровки с контроллером навигации и двумя контроллерами представлений ('A', 'B').

В файле раскадровки: Navigationcontroller является начальным контроллером представления. Контроллер вида «А» подключен к NavigationController в качестве корневого контроллера. Контроллер вида «B» находится в раскадровке, но не подключен ни к какому контроллеру вида.

когда я программно пытаюсь вставить контроллер вида «B» на контроллер навигации из контроллера вида «A» с помощью:

B *controllerB = [[B alloc] init];
[self.navigationController pushViewController:controllerB animated:YES];

все, что я получаю, это переход на черный экран.

Я проверил свойство navigationController в контроллере представления A во время выполнения, и это не ноль. Я не создаю экземпляр навигатора Navigation Controller самостоятельно, я позволяю раскадровке работать (возможно, в этом проблема). Но я думаю, что должна быть возможность «вручную» выдвинуть контроллер представления на контроллер навигации, созданный раскадровкой.

Когда я подключаю переход от кнопки к «B» в раскадровке, все работает отлично. Только программно это не работает, только показывает черный экран внутри контроллера навигации.

Может быть, кто-то может помочь мне с этим вопросом.

Ответы [ 2 ]

4 голосов
/ 24 ноября 2011

Я еще не использовал раскадровки, так что этот ответ от взгляда на документы. Похоже, вы не можете выделить / инициализировать контроллер представления из раскадровки. Вам нужно использовать метод instantiateViewControllerWithIdentifier: вашего экземпляра UIStoryboard, а затем вы можете нажать контроллер.

2 голосов
/ 16 апреля 2016

Принятый ответ не сработал для меня.Я уже использовал instantiateViewControllerWithIdentifier для навигации по контроллеру в другой раскадровке.Я использую xcode7.2 и Swift.

Я перемещаюсь от storyboard1, некоторые действия кнопки контроллера представления.Назначение - начальный навигационный контроллер Storyboard2.
Тем не менее, я получаю черный экран.

Проблема заключалась в том, что навигационный контроллер storyboard2, связанный с 1-м контроллером представления, был связан через show.

Решение:
Удалить связь между контроллером Nav и контроллером первого вида.Теперь свяжите это, используя root view controller.(Ctrl + клик по контроллеру навигации и перетащите его на контроллер просмотра и выберите опцию «корневой контроллер просмотра»)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...