2009-08-11 3 views
0

Я запускаю приложение, где мне бы хотелось иметь несколько контроллеров представлений. Некоторые из представлений будут отображаться внутри навигационного контроллера. Я могу создать контроллер навигации, а затем добавить к нему еще один экземпляр контроллера. Но то, что я хотел бы сделать, просто создает экземпляр контроллера представления, который имеет свой собственный вид и является контроллером корневого представления контроллера навигационного представления. Поэтому, когда я создаю экземпляр контроллера представления, я бы хотел, чтобы он создал навигационный контроллер и нажал «я» на него. Когда я это делаю, мой симулятор падает, и детали не дают повода. Консоль ничего не отображает. Есть идеи. Моя причина заключается в том, чтобы разделить логику, не имея контроллера вида, который просто создает контроллер навигации, а затем накладывает на него еще один контроллер представления в качестве контроллера корневого представления.Может ли UIViewController добавить себя в UINavigationController

ответ

3

Я не совсем уверен, правильно ли понял ваш вопрос. Почему было бы предпочтительнее, если бы контроллер просмотра подтолкнул себя к контроллеру навигации? Я имею в виду, вы должны каким-либо образом создать экземпляр своего контроллера представления в какой-то момент кода (делегата приложения или другого контроллера представления). Почему вы не можете просто создать контроллер навигации там, создать экземпляр своего VC, а затем нажать его на контроллер nav? Насколько я вижу, это не связано с созданием дополнительных контроллеров представлений.

Как бы то ни было, наличие контроллера вида выбора само по себе, где оно используется (то есть нажимается), не является лучшей практикой. Таким образом, вы теряете гибкость использования его в других контекстах. Всегда старайтесь сочетать свои компоненты как можно более свободно.

+0

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

+0

Ну, еще один момент, о котором я забыл упомянуть: у вашего контроллера навигации должен быть какой-то владеющий родитель. Либо он добавляется в контроллер панели вкладок, созданный в качестве основного контроллера представления в вашем делете приложения, либо помещенный как контроллер модального представления на какой-либо другой контроллер представления. Как должен работать ваш контроллер подзадачи? Кто будет владеть навигационным контроллером (управление памятью)? –

+0

«Моя идея заключалась в том, что для другого контроллера представления использовать этот контроллер представления, он мог бы просто создать экземпляр, и логика того, должна ли она быть в контроллере навигации, была бы прозрачной для родителя» -> я думаю, это не будет потому что в этом случае родитель должен будет представить контроллер навигации, а не ваш контроллер подзадачи. –

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