繁体   English   中英

如何使用Segues从UIView导航到UIView Controller?

[英]How to navigate from UIView to a UIView Controller using segues?

目的:用上一个视图控制器“登录页面”中的“继续此处”按钮来显示视图控制器“欢迎页面”。

我一直在Xcode 8.2的 swift 3上制作此IOS应用程序,该应用程序具有以编程方式编码的登录页面,并希望转换到另一个名为“欢迎页面”的页面,该页面在Storyboard中的屏幕上具有按钮。

故事板

在将以编程方式编码视图控制器连接到包含已拖到情节提要板上的按钮的另一个视图控制器时,我遇到了问题。 我阅读了许多文章,并观看了许多有关以编程方式构建和使用segue的教程。 还研究过使用协议来解决我的问题,但是由于某种原因,我遇到了错误。

我曾尝试实现segue并给它们一个标识符,然后呈现它们,但效果不佳。 关于尝试的意思是我使用了不同的命令,例如dismiss,present,show,但是它没有查看下一个视图控制器上的按钮 这是视图控制器类“登录页面”的功能,该功能必须移至if语句之后的下一个视图控制器,以便它可以通过按钮显示视图控制器“登录页面”。

func handleLogin() {

    //Guard statements are useful for form validation
    guard let email = emailTextField.text, let password = passwordTextField.text
        else{
            print("Form not valid")
            return
    }

    Auth.auth().signIn(withEmail: email, password: password) { (user, error) in

        if error != nil{

            let alert = UIAlertController(title: "Sorry!", message: "Incorrect Credentials", preferredStyle: UIAlertControllerStyle.alert)
            alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil))
            self.present(alert, animated: true, completion: nil)

            print(error)
            return
        }
        //Need to do the code here that can display the next view controller with the button
    }
}

请帮助。

要以编程方式选择到Storyboard视图,您需要实例化下一个视图控制器,如果使用navigationController则可以调用pushViewController ,也可以使用self.present() 这是使用navigationController的示例。

let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "NextViewController") as! NextViewController
    return controller
self.navigationController?.pushViewController(controller, animated: true)

请注意,您应将情节提要名称"Main"更改为您的情节提要文件名。 您还应该将"NextViewController"更改为控制器情节提要标识符(请参见下图中的情节提要ID)。 另外,还要确保在情节提要中设置自定义类(请参见下图中的“自定义类”)。

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM