• iOS pushViewController 和 presentViewController的区别 详解


    pushViewController 导航控制器入栈的方式切换页面
    presentViewController 模态切换的方式切换页面

    1:用 UINavigationController 的时候用 pushViewController:animated
         返回之前的视图 [[self navigationController] popViewControllerAnimated:YES];
         push 以后会在 navigation的 left bar自动添加back按钮,它的响应方法就是返回,所以一般不需要写返回方法,点back按钮即可

    2:其他时候用presentModalViewController:animated

        [self presentViewController:a animated:YES completion:^{

            AMLog("打开Controller-A 页面");

        }];


     返回之前的视图 :

        [self dismissViewControllerAnimated:YES completion:^{

            AMLog("关闭当前Conrtroller ");

        }];

    3:切换视图一般用不到 addSubview
    UINavigationController是导航控制器,如果pushViewController的话,会跳转到下一个ViewController,点返回会回到现在这个ViewController;
    如果是addSubview的话,其实还是对当前的ViewController操作,只是在当前视图上面又“盖”住了一层视图,其实原来的画面在下面呢,看不到而已。(当然,也可以用insertSubView atIndex那个方法设置放置的层次)。

    案例 :
    使用 presentViewController 方法从 A -> B -> C,若想在 C 中直接返回 A,则可这样实现

    C中返回事件 :
    - (void)back  
    {

        [self dismissViewControllerAnimated:NO completion:^{

            AMLog("关闭当前Conrtroller ");

        }]; // 注意一定是NO

        [[NSNotificationCenter  defaultCenter]postNotificationName:@"backback" object:nil];  
    }

    然后在B中 :
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(back) name:@"backback" object:nil];  

    -(void)back  
    {  

     [self dismissViewControllerAnimated:NO completion:^{

        AMLog("关闭当前Conrtroller ");

     }];

    }

    下面是执行顺序:

    push:

    present:

  • 相关阅读:
    代理的原理
    nodemon:让node自动重启
    http与https的区别
    Content-Type:几种常用数据编码格式
    vue ssr服务端渲染
    vue 实现文件上传和文件下载
    vue element-ui表格里时间戳转换成时间显示
    vue npm start 自动打开网页
    yearProgress.vue
    vuejs中class与style的绑定
  • 原文地址:https://www.cnblogs.com/jiuyi/p/11558137.html
Copyright © 2020-2023  润新知