Swift:使用按钮导航到新的 ViewController

Posted

技术标签:

【中文标题】Swift:使用按钮导航到新的 ViewController【英文标题】:Swift: Navigate to new ViewController using button 【发布时间】:2014-11-23 22:04:55 【问题描述】:

我有一个单视图应用程序,它连接以解析和验证用户登录信息并更新 UILabel 说“是的,您已成功登录” - 现在我希望它导航到一个新视图(这将是应用程序的主要部分)。

我已将一个新的视图控制器拖到情节提要上,然后按住 Ctrl 并拖动按钮并使用 show 将其链接到新控制器。但是,当我加载应用程序并单击按钮时,它会直接进入新视图。只有当 if-else 语句的正确部分被触发时,我才需要它去那里。

这有意义吗?感谢您的帮助。非常感激。

编辑

if 语句是:

if usrEntered != "" && pwdEntered != "" 
        PFUser.logInWithUsernameInBackground(usrEntered, password:pwdEntered) 
            (user: PFUser!, error: NSError!) -> Void in
            if user != nil 
                self.messageLabel.text = "You have logged in";
             else 
                self.messageLabel.text = "You are not registered";
            
        
    

它位于 ViewController.swift 文件中

【问题讨论】:

你的 if-else 语句是什么,放在哪里? @MattyAyOh 添加到原始问题 位即:self.messageLabel.text = "你已登录"; - 我希望它重定向到新视图 Xcode 6.1 button with segue 的可能重复项 这个 if 语句什么时候被命中?它存在于您的视图控制器实现中的什么方法?如果您创建一个新项目,请在界面构建器中添加另一个视图控制器,将按钮添加到根视图控制器,并将其绑定到 show 新视图控制器 - 它可以工作 一定是发生了其他事情,迫使您要显示的新视图控制器... 【参考方案1】:

首先,正如我在this answer 中解释的那样,您需要将 segue 从整个 UIViewController 拖到下一个 UIViewController,即,您不应该专门将 UIButton(或任何 IBOutlet)连接到下一个 UIViewController,如果转换的条件:

您还需要为 segue 分配一个标识符。为此,您可以选择 segue 箭头,然后在右侧面板中输入标识符:

然后要执行实际的转场,请在条件中使用 performSegueWithIdentifier 函数,如下所示:

if user != nil 
    self.messageLabel.text = "You have logged in";
    self.performSegueWithIdentifier("segueIdentifier", sender: self)
 else 
    self.messageLabel.text = "You are not registered";

其中“segueIdentifier”是您在情节提要中分配给您的 segue 的标识符。

【讨论】:

你能告诉我为什么新的 viewController 没有 .swift 文件让代码在视图中运行吗? 什么意思?当你创建一个新的视图控制器时,你需要将它创建为一个 swift 或 obj-c 文件......所以让它成为一个 swift 文件...... 是的,我能做到。但是如何将新文件分配给新视图? @DannieCoderBoi 抱歉,现在没有时间,但这里是链接视图控制器的方法:***.com/a/19370389/2274694 没有转场;老实说,我不明白为什么 android 需要 2 秒才能在 xcode 中学习 20 小时。

以上是关于Swift:使用按钮导航到新的 ViewController的主要内容,如果未能解决你的问题,请参考以下文章

创建视图控制器并将现有 VC 的标签和按钮添加到新的 VC Swift iOS

导航控制器到 Pushviewcontroller 到新的视图控制器,WebKit 延迟/首次加载时慢

使用 swiftUI 中的按钮导航到新屏幕

如何基于之前的 ViewController 创建导航栏后退按钮

如何使用动态视图 iOS Swift 处理导航?

Swift UI 2 DocumentGroup 获取导航栏按钮操作