用户登录后的导航控制

时间:2021-02-08 12:11:29

标签: ios swift xcode uikit

我对根视图控制器和导航有疑问。在应用程序委托中,我将 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
}

1 个答案:

答案 0 :(得分:0)

您可以将 UINavigationController 设置为 rootViewController,然后替换它的视图控制器。

let rootController = UINavigationController(rootViewController: loginVC)
window?.rootViewController = rootController
// after login
rootController.setViewControllers([mainVC], animated: true)
相关问题