ViewController跳转的两种方式

2019-08-27  本文已影响0人  土豆吞噬者

模态跳转

使用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)
上一篇 下一篇

猜你喜欢

热点阅读