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

时间:2014-10-24 04:04:59

标签: ios swift xcode6

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

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

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

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

enter image description here

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

4 个答案:

答案 0 :(得分:15)

我已经找到了答案

let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)

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

答案 1 :(得分:8)

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

enter image description here

编程方式:

@IBAction func scanButton (sender: UIButton!) {

    performSegueWithIdentifier("nextView", sender: self)

}

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

答案 2 :(得分:2)

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

来源:iOs UINavigationViewController

答案 3 :(得分:1)

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

如果要在目标视图控制器中放置数据,可以在按钮中添加一个不作用,并将数据放入准备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标识符,故事板标识符等,您甚至可以根据需要准备目标视图控制器。