Swift – 使用操作按钮更改视图控制器

如何使用UIButton切换视图控制器? 这是我的代码:

@IBAction func scanAction(sender: AnyObject) { //switch view controller } 

当我单击“扫描”按钮时,它将转到登录表单。

我在Main.storyboard中的视图控制器是这样的

在此处输入图像描述

如果可以,请给我一些建议。 谢谢。

我已经找到了答案

 let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil) let nextViewController = storyBoard.instantiateViewControllerWithIdentifier("nextView") as NextViewController self.presentViewController(nextViewController, animated:true, completion:nil) 

一种方法是从按钮中获得模态segue。 不需要IBOutlet。

在此处输入图像描述

编程方式:

 @IBAction func scanButton (sender: UIButton!) { performSegueWithIdentifier("nextView", sender: self) } 

您应该添加模态segue并命名标识符。 您将VC1连接到VC2。

最简单的方法是创建一个UINavigationViewController。 然后将Button添加到当前屏幕。 现在按下控制按钮并将按钮拖动到目标视图控制器。 而已。

来源: iOs UINavigationViewController 。

实际上没有硬编码的答案。 在故事板中,您可以控制将按钮拖动到下一个视图控制器并在那里定义segue。 这将确保无论何时按下按钮,都会触发segue。 您可以在触发的segues的按钮“Connections Inspector”中看到这一点。

如果要将数据放入目标视图控制器中,可以向按钮添加不作用,并将数据放入准备segue函数中。 关于这个很酷的事情是你的触发的segue仍然会从你的按钮触发。 这部分看起来像这样:

  @IBAction func buttonPressed(_ sender: UIButton) { someImportantData = "some data if needed" //no need to trigger segue :) } //not your case, but in order to understand the sage of this approach @IBAction func button2Pressed(_ sender: UIButton) { someImportantData = "some data2 if needed" //no need to trigger segue :) } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { //retrieve the destination view controller for free if let myDestincationViewController = (segue.destination as? MyDestincationViewController) { myDestincationViewController.someImportantData = someImportantData } } 

这样,您就不需要任何硬编码字符串用于segue标识符,故事板标识符等,您甚至可以根据需要准备目标视图控制器。