登录后,我的UI视图乱了(ios swift 5)

问题描述 投票:0回答:1

我创建了一个非常简单的登录页面,当它们匹配时,它会进入主页.但它进入主屏幕时有点混乱,图片如下:

Login pageHome Page that messed up

如果我把初始视图放在主屏幕视图中,它就会像这样工作。

Home screen

这是我简单的登录代码。

@IBAction func LoginTapped(_ sender: Any) {

    let id = idTxtfield.text!.trimmingCharacters(in: .whitespacesAndNewlines)
    let password = passwordTxtfield.text!.trimmingCharacters(in: .whitespacesAndNewlines)

    if id == "ID" && password == "Password" {
        let HomeScreenVC = self.storyboard?.instantiateViewController(identifier: "HomeScreenVC") as! HomeScreenVC
        self.navigationController?.pushViewController(HomeScreenVC, animated: true)

        // make it as root view
        self.view.window?.rootViewController = HomeScreenVC
        self.view.window?.makeKeyAndVisible()
    }

    else {
        print("wrong password")
    }
}

我在这里做错了什么吗?任何帮助将被感激Thanks

ios swift uitableview authentication uiview
1个回答
0
投票

你的代码有几个问题,最重要的是你在推送主视图控制器的同时,还把它设置为根视图控制器。你不应该两者兼而有之,这可能是你的UI看起来一团糟的原因。

如果你想简单地在屏幕上推送它,只需使用。

navigationController?.pushViewController(homeViewController, animated: true)

但如果你想完全改变根视图控制器,那么你需要访问你的应用程序窗口,并设置新的根视图控制器(有或没有动画)。假设你的应用中只有一个窗口,你可以这样访问它。

UIApplication.shared.windows.first(where: { $0.isKeyWindow })

另外,使用小写字母来命名你的属性或方法是一个很好的做法,而使用大写字母来命名你的结构、枚举或类。

最后,你的 didTapLogin() 方法将成为。

@IBAction func didTapLogin() {
    guard let username = usernameTextField.text, let password = passwordTextField.text, username == "some_username", password == "some_password" else {
        // Wrong password
        return
    }
    guard let mainWindow = UIApplication.shared.windows.first(where: { $0.isKeyWindow }) else { return }
    let homeViewController = storyboard!.instantiateViewController(identifier: "HomeScreenVC") as! HomeScreenVC
    mainWindow.rootViewController = homeViewController
    UIView.transition(with: mainWindow, duration: 1.0, options: .transitionCrossDissolve, animations: nil, completion: nil)
}
© www.soinside.com 2019 - 2024. All rights reserved.