我对根视图控制器和导航有疑问。在应用程序委托中,我将 LoginViewController 设置为 rootViewController,如果登录成功,请检查这是否是设置新根控制器的错误方法。下面的代码来自我的 LoginViewController。
@objc func didTapLoginButton() {
guard let email = emailInputField.text,
let password = passwordInputField.text
else { return }
let parameters = ["email": email,
"password": password]
networkManager.userLogin(endpoint: "/login", parameters: parameters) { [weak self] (result) in
switch result {
case .success(let user):
***//THESE TWO FUNCTIONS***
self?.view.removeFromSuperview()
self?.newRootViewController()
case .failure(let error):
self?.showAlertWith(title: "Network couldn't load data", message: error.localizedDescription)
}
}
}
var window: UIWindow?
func newRootViewController() {
let tabBarController = UITabBarController()
let v1 = UINavigationController(rootViewController: BookedTripsListViewController(networkManager: NetworkManager()))
let v2 = UINavigationController(rootViewController: TripDetailsViewController())
let v3 = UINavigationController(rootViewController: NeedHelpViewController())
v1.title = "First"
v2.title = "Second"
v3.title = "Third"
tabBarController.viewControllers = [v1, v2, v3]
tabBarController.tabBar.backgroundColor = .init(red: 0.949, green: 0.949, blue: 0.949, alpha: 1)
tabBarController.tabBar.shadowImage = UIImage()
tabBarController.tabBar.backgroundImage = UIImage()
self.window = UIWindow(frame: UIScreen.main.bounds)
self.window?.makeKeyAndVisible()
window!.rootViewController = tabBarController
}
答案 0 :(得分:0)
您可以将 UINavigationController 设置为 rootViewController,然后替换它的视图控制器。
let rootController = UINavigationController(rootViewController: loginVC)
window?.rootViewController = rootController
// after login
rootController.setViewControllers([mainVC], animated: true)