美文网首页
[iOS 开发基础]- 多控制器跳转

[iOS 开发基础]- 多控制器跳转

作者: MonkeyDKing | 来源:发表于2016-10-14 13:51 被阅读0次

    需求一:我们制作APP的不可能一个界面来实现所有需求的,我们需要多个界面的跳转。每个界面各自实现对应的需求,代码实现多控制器之间的跳转大致分为三类。一类是使用UINavigationController 跳转 ,一类是使用UITabBarController 实现多个控制器之间的跳转,还有一类是使用presentViewController( UIViewController, animated: animated

    , completion:completion)实现跳转。

    1.UINavigationController :

    实现跳转:使用UINavigationController要注意的是要设置根控制器,之后的跳转都是根据根控制器来完成跳转。设置根控制器代码如下:

    // 设置根控制器

    let nav = UINavigationController(rootViewController:ViewController())

    *使用UINavigationController时使用push和pop来实现跳转,代码如下:

    navigationController.pushViewController(目标控制器, animated: true/false)

    navigationController.popToViewController(回退上一个控制器, true/false )

    navigationController.popToRootViewControllerAnimated(true/false)

    *注意push是跳转到目标控制器,而pop是回退到上个控制器,popToRootView是直接回退根控制器。

    *在使用UINavigationController跳转时,UINavigationController会给所有目标控制器套上“导航栏”,完成push之后,会自动在“导航栏”上生成一个返回item,点击返回item会执行pop方法返回到上一个控制器。

    总结:使用UINavigationController跳转时,UINavigationController的外观只需要设置一次,之后派生的“导航栏”都会保持根控制器的外观。设置外观需要在initialize方法中设置外观代理对象(appearance)来完成设置,注意的是initialize是类方法。

    2.UITabBarController :

    实现跳转:使用UITabBarController注意的是,要同时把所有要跳转的控制器都一次设置完成。UITabBarController的子控制器是同时存在的,在跳转目标子控制器时不会释放其他子控制器。设置子控器的方法大致分为两种,一种是通过addChildViewController:ViewController 完成设置自控制器,这种方法每次只能设置一个子控制器。要设置多个子控器的时候可以使用viewControllers来设置多个子控制器,viewControllers 返回的是一个数组,使用时,创建完控制器,将控制器放入数组,然后直接赋值即可。需要注意的数组中的顺序,就是tabBar展示控制器的顺序,具体代码如下:

    1).使用addChildViewController

    self.addChildViewController:ViewController1()

    self.addChildViewController:ViewController2()

    self.addChildViewController:ViewController3()

    2).使用viewControllers

    self.viewControllers = [ViewController1(),ViewController2(),ViewController3()]

    *跳转时,直接点击“标签栏”上的barButtonItem即可

    3.presentViewController  :

    实现跳转: 使用presentViewController可以跳转任意控制器,但是在跳转完成之后,如果要返回就要完成dismiss方法。presentViewController跳转的特点是从屏幕下方推出直到覆盖完整个屏幕,效果还是蛮好的,值得注意的是在完成dismiss方法之后,presentViewController会从内存释放。具体代码如下:

    presentViewController(ViewController1() , animated: true/false , completion: nil)

    * completion是完成跳转之后执行的回调,我们一般填nil。

    * 在跳转完成一之后一定要首先写dismiss方法

    dismissViewControllerAnimated(true/false, completion:nil)

    *这样就完成了返回,同时该控制器也会从控制器中释放。

    总结:这样完成了多个界面之间跳转。

    需求二:当然控制器之间的跳转还可以使用sb,使用sb很简单直接拖线show即可。

    相关文章

      网友评论

          本文标题:[iOS 开发基础]- 多控制器跳转

          本文链接:https://www.haomeiwen.com/subject/vcggyttx.html