如何使用 segue 从 UIView 导航到 UIView 控制器?

Posted

技术标签:

【中文标题】如何使用 segue 从 UIView 导航到 UIView 控制器?【英文标题】:How to navigate from UIView to a UIView Controller using segues? 【发布时间】:2017-12-31 01:39:32 【问题描述】:

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

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

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

我尝试过实现 segue 并给它们一个标识符,然后将它们呈现出来,但效果不佳。关于我尝试的意思是我使用了不同的命令,例如关闭、呈现、显示,但它没有查看下一个视图控制器上的按钮。这是视图控制器类的功能 - “登录页面”,它必须在 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
    

请帮忙。

【问题讨论】:

首先,我不知道如何处理您的快照。你展示了三个故事板场景,但我不确定它们之间的关系是什么。你想让第二个按钮把你带到第三个(左下角)吗?这是非常不清楚的。下次,请给各种场景贴上标签,告诉我们哪个去哪个。其次,您说“我尝试过实现 segues 并给它们一个标识符,然后呈现它们但没有用”。好吧,这就是我的建议,所以如果没有看到你在那里尝试过什么,也没有告诉我们你所说的“没有用”,我们无法帮助你。 @Rob 很抱歉没有说得足够清楚来回答我的问题。好吧,我想将名为“登录页面”的下部视图控制器连接到具有“继续此处”按钮的视图控制器“欢迎页面”。 【参考方案1】:

要以编程方式连接到 Storyboard 视图,您需要实例化下一个视图控制器,然后如果使用 navigationController,则调用 pushViewController,或者您可以使用 self.present()。这是一个使用导航控制器的示例。

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)。还要确保在情节提要中设置您的自定义类(参见下图中的自定义类)。

【讨论】:

我用过你的方法,但是没用。我可以移动到下一个视图控制器,但无法查看“继续此处”按钮。我想从“登录页面”连接到“欢迎页面”。还有其他解决方案可以让我在下一个视图控制器上显示按钮吗?

以上是关于如何使用 segue 从 UIView 导航到 UIView 控制器?的主要内容,如果未能解决你的问题,请参考以下文章

使用 UIButton 在 UIView 之间导航 [重复]

iOS Swift - 使用可以取消的临时 UIView

以编程方式从 UIView 执行 Segue

如何从 UIView 导航到 UIViewController

如何从 UIView 导航 UIViewController

使用 Firebase 登录 iOS 13.2 的导航/Segue