如何使用 UIButton 切换视图控制器?这是我的代码:
@IBAction func scanAction(sender: AnyObject) {
//switch view controller
}
当我点击“扫描”按钮时,它将转到登录表单。
我在 Main.storyboard 中的视图控制器就像这样
如果可以,请给我一些建议。谢谢。
答案 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。
编程方式:
@IBAction func scanButton (sender: UIButton!) {
performSegueWithIdentifier("nextView", sender: self)
}
您应该添加模态segue并命名标识符。您将VC1连接到VC2。
答案 2 :(得分:2)
最简单的方法是创建一个UINavigationViewController。然后将Button添加到当前屏幕。 现在按下控制按钮并将按钮拖动到目标视图控制器。多数民众赞成。
答案 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标识符,故事板标识符等,您甚至可以根据需要准备目标视图控制器。