广

IOS开发

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    比较IOS开发中常用视图的四种切换方式

    2018-04-08 09:03:53 次阅读 稿源:互联网
    零七广告

    在iOS开发中,比较常用的切换视图的方式主要有以下几种:

    1. push、pop

    使用举例(ViewController假设为需要跳转的控制器):

    [self.navigationController pushViewController:ViewController animated:YES]; //入栈,跳转到指定控制器视图[self.navigationController popViewControllerAnimated:YES]; //弹栈,返回到前一个视图[self.navigationController popToViewController:ViewController animated:YES]; //弹栈 返回指定控制器所在视图[self.navigationController popToRootViewControllerAnimated:YES]; //弹栈 返回根控制器视图

    2. modal

    使用举例(ViewController假设为需要跳转的控制器):

    [self presentViewController:ViewController animated:YES completion:nil]; //跳转到ViewController所在视图[self dismissModalViewControllerAnimated:YES]; //退出当前视图

    3. 切换window的rootViewController

    使用举例(ViewController假设为需要跳转的控制器):

    UIWindow *window = [UIApplication sharedApplication].keyWindow; //获得主窗口window.rootViewController = [[ViewController alloc] init]; //将主窗口的根视图设置为当前控制器

    4. 将另一个控制器的视图添加为当前控制器视图的子视图

    [self.view addSubview: ViewController.View]; //实现复杂界面的时候常用

    简要介绍下各种方式的优点和不足:

    1、push、pop方式

    优点:控制器切换是可逆的,且原始图不会销毁

    缺点:依赖于UINavigationController,故需要有一个导航控制器,与某些界面不需要导航控制器有可能会冲突

    push操作是可逆的,即控制器的切换时可逆的。

    2、modal

    优点:控制器切换是可逆的,且原始图不会销毁

    缺点:跳转没有push方式自由,dismiss方式只能按顺序返回,不能跳跃, 从前一个modal到后一个时候,前一个控制器不会消失,一直在内存中

    3、切换window的rootViewController

    优点:跳转直接迅速,而且可以销毁前一个控制器,因为将window的强引用改为当前控制器,故前一个控制器会消失(ARC环境)

    缺点:视图跳转不可逆

    4、将一个控制器的视图添加到当前视图上面

    优点:通过一个控制器将另一控制器设置为属性,自由读取其他控制器中的视图从而能够实现复杂UI界面

    缺点:复杂,多数场合不适用

    列表比较如下:

    比较项目 push、pop modal 切换窗口的根控制器 添加子视图
    销毁源视图
    使用场合 有导航控制器,需要能够返回前一个视图的情况 没有导航控制器的跳转,能返回前一个视图 版本新特性或者不需要保留前一个控制器的情况 需要实现复杂界面的情况
    是否有导航控制器

    总结

    视图切换的方式各有利弊,需要根据我们的需求选择使用的方式,以上就是本文的全部呢荣,水平有限,若有不正确之处,望各位批评指正,共同学习,共同提高!

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告