代码之家  ›  专栏  ›  技术社区  ›  N. Der

调用rootViewController后未加载,使用->present(viewControllerToPresent:UIViewController,animated:true,completion:nil)

  •  0
  • N. Der  · 技术社区  · 6 年前

    我的rootViewController工作正常,加载正常。但是,当我用 present(viewControllerToPresent: UIViewController, animated: true, completion: nil) 从另一个viewController我只得到一个黑屏。

    @objc func handleLogin() {
        print("LOGIN BUTTON TOUCHED")
        guard let email = emailTextField.text, let password = passwordTextField.text else {
            print("Form is not valid.")
            return
        }
        Auth.auth().signIn(withEmail: email, password: password) { (user, error) in
            if error != nil {
                print(error!)
                return
            }
            let viewController = RootViewController()
       ***  self.present(viewController, animated: true, completion: nil)
            print("Logged in")            
        }
    }
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Xuan-Gieng Nguyen    6 年前

    这没有错 self.present(viewController, animated: true, completion: nil)

    RootViewController() 已呈现。你看到的黑屏可能是没有任何数据的?我不确定,需要你的代码。

    您可以考虑的另一种方法是替换真实的 rootViewController 从当前 uiWindow

    @objc func handleLogin() {
      print("LOGIN BUTTON TOUCHED")
      guard let email = emailTextField.text, let password = passwordTextField.text else {
        print("Form is not valid.")
        return
      }
    
      Auth.auth().signIn(withEmail: email, password: password) { [weak self] (user, error) in
        guard let strongSelf = self else { return }
        guard error == nil else { return }
        guard let user = user else { return }
    
        UIApplication.shared.keyWindow?.rootViewController = RootViewController()
        print("Logged in")            
      }
    }
    
        2
  •  0
  •   slash gamer    6 年前

    您已经创建了一个新实例(RootViewController),它必须是黑色的。。你没有提到你的RootViewController