zoukankan      html  css  js  c++  java
  • 模态Model视图Push下一个视图(混合跳转)

    来自:

    http://www.cnblogs.com/dingding3w/p/6222626.html

        如果没有UINavigationController导航栏页面之间切换是不能实现Push操作的,那我们平时见得无导航栏Push到下一页是怎么实现的呢? 现在跟大家分享一下实现原理, 就是在第一次Model出来的控制器提前包装一个导航栏,并在Model出来控制器实现UINavigationController的代理方法,UINavigationControllerDelegate判断当前Model出来的控制器是否为自身控制器,这样做的目的就是为了更安全的隐藏该隐藏的控制器导航栏;虽然导航栏隐藏了,但是作为导航栏的属性还是存在的,所以我们现在就可以不知不觉得在Model出来的控制器里面Push出下一个页面,而且下一个页面还是带导航栏的,这样Push出来的控制器,不仅没有消失原有的Pop功能操作,而且还可以实现DisMiss操作;

        ③核心代码展示:

    复制代码
    /** 这里用到的核心处理办法是 */
    /** 1.在A控制器模态Model推出B控制器的时候先给B控制器包装一个导航控制器 */
    UINavigationController *ANavigationController = [[UINavigationController alloc] initWithRootViewController:[[BViewController alloc] init]];
    [self presentViewController:ANavigationController animated:YES completion:nil];

     //设置代理

        self.navigationController.delegate = self;

       

    /** 2.在B控制器遵守UINavigationControllerDelegate实现代理协议,隐藏当前控制器的导航栏 */ #pragma mark - UINavigationControllerDelegate
    - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { // 判断要显示的控制器是否是自身控制器 BOOL isShowMyController = [viewController isKindOfClass:[self class]]; [self.navigationController setNavigationBarHidden:isShowMyController animated:YES]; } #pragma mark - Push出C控制器 [self.navigationController pushViewController:[[CViewController alloc] init] animated:YES]; /** 3.在C控制器里面可直接在返回按钮方法里DisMiss */ [self.navigationController dismissViewControllerAnimated:YES completion:nil];
  • 相关阅读:
    TCP 连接状态
    可视化垃圾回收算法
    flume-ng+Kafka+Storm+HDFS 实时系统搭建
    WeX5 IDE 手机移动开发+JAVA +大数据
    云计算高级运维工程师
    CentOS 5.8 上安装 systemtap-2.6
    SYSTEMTAP -ORACLE
    Apple激活日期查询
    Div 浮动到另一个div之上
    Python模块常用的几种安装方式
  • 原文地址:https://www.cnblogs.com/daxueshan/p/6365778.html
Copyright © 2011-2022 走看看