模态跳转
使用present可以以模态方式显示ViewController,当ViewControllerA以模式方式显示ViewControllerB后,ViewControllerA的presentedViewController属性会设置为ViewControllerB,ViewControllerB的presentingViewController属性会设置为ViewControllerA。
class func show(caller:UIViewController){
let storyboard=UIStoryboard(name: "Main", bundle: nil)
let viewController=storyboard.instantiateViewController(withIdentifier: "TestAViewController")
caller.present(viewController,animated: true, completion: nil)
}
使用dismiss可以关闭ViewController的presentedViewController,如果ViewController没有presentedViewController,则会要求presentingViewController调用dismiss关闭自己,所以正确关闭自己的方法是调用presentingViewController的dismiss方法。
如果连续显示多个ViewController,对栈中最底部的ViewController调用dismiss会使栈上方所有ViewController关闭。
presentingViewController?.dismiss(animated: true, completion: nil)
导航控制器跳转
NavigationController使用栈的方式管理ViewController,使用pushViewController跳转到ViewController,使用popViewController返回上一个ViewController,导航栏自带返回按钮返回上一个ViewController。
navigationController?.pushViewController(viewController, animated: true)
navigationController?.popViewController(animated: true)
网友评论