视图控制器转换的3种方式
Posted
技术标签:
【中文标题】视图控制器转换的3种方式【英文标题】:3 ways of view controller transition 【发布时间】:2017-10-19 02:15:25 【问题描述】:我是ios开发的初学者,最近,我只是按照初学者教程。
假设我想通过单击一个按钮从一个 VC 移动到另一个 VC,所以我发现有三种方法可以从一个 ViewController 移动到另一个 ViewController(模态转场)。
在主情节提要中,我只需单击控件并从按钮拖动到目标视图控制器,然后以模态方式选择呈现
以编程方式,通过实现以下代码
@IBAction func logInButtonDidPressed(_ sender: Any)
// modal transition to VC2
let viewController2 =
storyboard?.instantiateViewController(withIdentifier:
"ViewController2") as! ViewController2
present(viewController2, animated: true, completion: nil)
以编程方式,通过使用执行转场功能
@IBAction func logInButtonDidPressed(_ sender: Any)
performSegue(withIdentifier: "toSecondViewController", sender: self)
它们是一样的吗?还是用于不同的情况?
提前致谢:)
【问题讨论】:
【参考方案1】:是的,它们很相似。我认为明显的区别是数据传递。第一个和第三个相同,使用以下方法将数据传递给下一个控制器:
// 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)
【讨论】:
【参考方案2】:我会使用 segues,因为与手动演示相比有一些优势:
您可以创建展开转场以将当前视图控制器退出到层次结构中的任何视图控制器。
您可以通过单击鼠标将 3D 触摸支持添加到转场。
第一个和最后一个方法产生相同的结果。我会尽可能通过单击和拖动来创建转场。如果您需要在执行转换之前进行一些数据验证或其他工作,则必须手动调用performSegue
方法。
【讨论】:
以上是关于视图控制器转换的3种方式的主要内容,如果未能解决你的问题,请参考以下文章