ViewController в NavigationController и обратно

У меня есть одна проблема, для которой я не знаю, как решить. В настоящее время у меня есть главная UIViewController с некоторыми кнопками. Это исходное представление, созданное с помощью приложения. На нем одна кнопка вызывает переход раскадровки со стилем Modal на ViewController, который является частью UINavigationController. После этого несколько других контроллеров представления обрабатываются в UINavigationController через переходы и возвращаются через navigationController:popViewControllerAnimated. Чего я не знаю, так это как вернуться от UINavigationController к первому UIViewController. Я пробовал, когда я нахожусь на первом на навигационном Ctrl,

[self removeFromParentViewController];

тем не менее, это только удаляет представление, но кажется, что UINavigationController каким-то образом остается в живых, так как в результате появляется черный экран. Возможно создание несвязанного перехода и вызов его из кода, но я не уверен, что это правильный путь. Оставит ли это навигационный контроллер в живых?


person Gossamer    schedule 10.12.2012    source источник


Ответы (1)


Есть ли какая-то причина, по которой вы сначала используете UIViewController, а ЗАТЕМ UINavigationController?

Почему бы не изменить это так, чтобы UINavigationController был начальным контроллером представления, а затем управлять всем оттуда.

Если вы хотите, чтобы в первом представлении не было панели навигации, вы можете легко скрыть ее.

Таким образом, вы можете перемещаться по всем видам, выталкивая и нажимая UINavigationController.

person Fogmeister    schedule 11.12.2012
comment
Да ты прав. Скрытие бара должно быть правильным способом. Я пытался скрыть это от ИБ, но почему-то все равно всплывает. Я попытаюсь сделать это из кода, но в любом случае я хочу узнать, как удалить navcontroller :) - person Gossamer; 11.12.2012
comment
Вы также можете удалить его из IB. В инспекторе контроллера представления в разделе «Смоделированные показатели — верхняя панель» выберите «Нет». Вы так и не ответили на мой вопрос. Зачем усложнять себе задачу? Просто вставьте NavigationController в качестве начального контроллера представления, и вам не придется беспокоиться об его удалении. - person Fogmeister; 11.12.2012
comment
Я согласился с вами. Я буду использовать NavigationController. Но я хотел бы узнать, как удалить навигационный контроллер из окна. Может быть, когда-нибудь мне понадобится... - person Gossamer; 11.12.2012
comment
Ах, извините, неправильно прочитал это раньше :D Хороший вопрос. Я полагаю, вам придется удалить его из контроллера представления под ним (то есть того, которому принадлежит навигационный контроллер). Таким образом, вам понадобится какой-то способ (метод делегирования или что-то еще), чтобы перезвонить ему, чтобы сказать ему, чтобы он удалил контроллер nag из себя. - person Fogmeister; 11.12.2012
comment
Кстати, я отключил верхнюю панель, а в IB панель навигации скрыта, но при запуске приложения она появляется. - person Gossamer; 11.12.2012
comment
Да, вам все еще нужно скрыть фактическую панель навигации в коде. В коде viewWillAppear поставить... [self setNavigationBarHidden:YES] - person Fogmeister; 12.12.2012