Вы можете использовать setViewControllers: animated: для изменения стека контроллеров, но я бы посоветовал вам еще раз подумать, действительно ли ваш контроллер вида входа в систему является корнем стека навигации. Когда пользователи видят контроллер навигации, они ожидают, что будут перемещаться вверх и вниз по иерархии экранов, организованных в древовидную структуру. Изменение корня этого дерева несколько подрывает метафору.
Подумайте об использовании модального представления, чтобы продемонстрировать тот факт, что вход в систему выходит за рамки основной иерархической структуры навигации вашего приложения. Вот пара вариантов:
A. Запустите на контроллере представления входа в систему и представьте контроллер навигации модально.
Если ваш контроллер вида входа в систему всегда будет первым экраном, который видит пользователь, вы можете добавить его вид непосредственно в окно без контроллера навигации. Затем, как только пользователь войдет в систему, создайте контроллер навигации и представьте его, вызвав presentModalViewController: animated: из своего контроллера вида входа в систему.
B. Инициализируйте контроллер навигации с его истинным корнем и представьте контроллер представления входа в систему модально.
Эта опция может быть полезна, если приглашение на вход в систему не всегда является первым просмотром, которое видит пользователь, особенно если приглашение на вход в систему может появляться в других контекстах. Например, я использовал этот подход в приложении, которое позволяет пользователю получать доступ к некоторым разделам в автономном режиме или анонимно. Приглашение для входа в систему отображается модально, когда пользователь пытается получить доступ к содержимому, требующему аутентификации.