1) navigationController
является собственностью UIViewController
.Если контроллер представления является частью иерархии контроллера навигации, он будет установлен.
2) Вам придется управлять этим самостоятельно.Хранение ссылки в объекте, который выдвигает этот контроллер представления, будет обычным способом достижения этого.Поэтому, если A нажимает B, то A сохраняет ссылку на B и т. Д.
3) Нет способа заставить UINavigationController
сделать это для вас.Из того, что вы пытаетесь сделать, я предполагаю, что вы пришли из Android фона?У Android есть конкретные способы сделать это, но в iOS вам придется кодировать это самостоятельно.Вы можете сделать это, взглянув на UINavigationControllerDelegate
и метод navigationController:didShowViewController:animated:
.Вы могли видеть, когда контроллер представления выдвигается и если он уже находится в стеке, то обновите стек навигации (то есть свойство viewControllers
UINavigationController
), чтобы удалить его с того места, где он был.Но это может запутать пользователя.