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

13

我有一个单视图应用程序,它连接到Parse并验证用户登录信息,更新一个UILabel,显示“耶,您已成功登录”-现在我想让它导航到一个新的视图(这将是应用程序的主要部分)。

我已经将一个新的视图控制器拖到Storyboard上,并使用show Ctrl-Drag按钮将其链接到新控制器。然而,一旦我加载应用并单击按钮,它立即转到新视图。如果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语句是什么,它放在哪里? - A O
@MattyAyOh添加到原始问题中。 - DannieCoderBoi
我想让这个程序:self.messageLabel.text = "您已登录"; 自动重定向到一个新的视图。 - DannieCoderBoi
可能是Xcode 6.1带有segue的按钮的重复问题。 - Paulw11
这个 if 语句是在什么时候被触发的?它在你的视图控制器实现中属于哪个方法?如果你创建了一个新项目,在界面构建器中添加另一个视图控制器,将按钮添加到根视图控制器,并将其绑定到“show”新视图控制器 - 它可以工作。一定还有其他事情发生,迫使你的新视图控制器显示... - A O
1个回答

55

首先,正如我在这个答案中所解释的那样,您需要从整个UIViewController向下一个UIViewController拖动segue,也就是说,如果转换的条件是,您不应该将UIButton(或任何IBOutlet)与下一个UIViewController具体连接:

storyboard segue

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

segue identifier

然后要执行实际的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" 是你在故事板中为转场分配的标识符。


你能告诉我为什么新的viewController没有.swift文件来运行视图中的代码吗? - DannieCoderBoi
什么意思?当你创建一个新的视图控制器时,你需要将它创建为Swift或Obj-C文件...所以把它变成Swift文件... - Lyndsey Scott
可以的。但是我如何将新文件分配给新视图? - DannieCoderBoi
@DannieCoderBoi 抱歉,现在没时间,但是这里是如何链接你的视图控制器的方法:https://dev59.com/U2Ik5IYBdhLWcg3wU82o#19370389 - Lyndsey Scott
没有segue;老实说,我不明白为什么在Android中只需要2秒钟的事情,在xcode中却需要20个小时才能学会。 - pete

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接