IOS Переключение между 2 навигационными контроллерами
В моем приложении, если пользователь не зарегистрирован, он показывает контроллер входа, который встроен в контроллер навигации.
Когда пользователь регистрируется, приложение должно переключиться на другой навигационный контроллер, чтобы отобразить приложение.
Как я могу переключиться с одного контроллера навигации на другой, когда пользователь зарегистрировался.
Спасибо
![введите описание изображения здесь]()
Я проверяю, является ли пользователь зарегистрированным делегатом приложения:
// Check if user is log
let currentUser = PFUser.currentUser()
if currentUser != nil {
// Do stuff with the user
} else {
// Show the signup or login screen
let mainStoryboardIpad : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let nav = mainStoryboardIpad.instantiateViewControllerWithIdentifier("LogInController") as! UINavigationController
self.window?.rootViewController = nav
}
РЕШЕНИЕ: выглядит как работает
Когда пользователь нажимает кнопку входа в систему:
let mainStoryboardIpad : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let nav = mainStoryboardIpad.instantiateViewControllerWithIdentifier("MainNavController") as! UINavigationController
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.window?.rootViewController = nav
Ответы
Ответ 1
Решение 1
Одним из решений было бы использовать только один контроллер навигации. Когда пользователь войдет в систему, вы выберете все контроллеры представлений, используемые для входа в систему, и нажмите главный контроллер представления в стеке.
Решение 2
В качестве альтернативы вы можете представить новый навигационный контроллер по модулю поверх материалов входа, с основным контроллером в качестве его корня. Он будет просто представлен поверх него.
Решение 3
Вы также можете сначала рассмотреть возможность создания контроллера навигации с главным контроллером представления и представления над ним контроллера навигации для входа. Затем, когда пользователь будет входить в систему, вы просто отклоните контроллер навигации входа, отображающий главный контроллер представления.
Ответ 2
Установите идентификатор раскадровки навигационного контроллера
let navigationController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("SecondNavigationController")
self.presentViewController(navigationController, animated: true, completion: nil)
Надеюсь, это поможет.:)