我是iOS开发的初学者,最近,我只是按照初学者的教程进行操作。
假设我想通过单击按钮从一个VC移动到另一个VC,所以我发现有三种方法可以从一个ViewController移动到另一个ViewController(模态segue)。
在主故事板中,我只需点击控制并从按钮拖动到目标视图控制器并选择模态
programmaticaly,通过实施以下代码
@IBAction func logInButtonDidPressed(_ sender: Any) {
// modal transition to VC2
let viewController2 =
storyboard?.instantiateViewController(withIdentifier:
"ViewController2") as! ViewController2
present(viewController2, animated: true, completion: nil)
}
以编程方式,通过使用执行segue函数
@IBAction func logInButtonDidPressed(_ sender: Any) {
performSegue(withIdentifier: "toSecondViewController", sender: self)
}
提前致谢:)
答案 0 :(得分:2)
我会使用segues,因为与手动演示相比有一些优点:
您可以创建展开segue以将当前视图控制器退出到层次结构中的任何视图控制器。
只需点击一下鼠标,即可为细分添加3D触控支持。
第一种和最后一种方法产生相同的结果。我会尽可能通过点击和拖动来创建segues。如果您在执行转换之前需要进行一些数据验证或其他内容,则必须手动调用performSegue
方法。
答案 1 :(得分:2)
是的,它们很相似。我认为明显的区别在于数据传递。第一个和第三个相同,使用以下方法将数据传递给下一个控制器:
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
if let viewController2 = segue.destination as? ViewController2 {
viewController2.someProperty = someValue
}
}
对于第二次转换,您在创建下一个控制器时直接设置数据:
let viewController2 = storyboard?.instantiateViewController(withIdentifier:
"ViewController2") as! ViewController2
viewController2.someProperty = someValue
present(viewController2, animated: true, completion: nil)