美文网首页
UINavigationController-02入栈操作

UINavigationController-02入栈操作

作者: js_huh | 来源:发表于2020-08-22 22:48 被阅读0次

入栈操作

  • - pushViewController: animated:
    • 给导航控制器,添加子控制器
      UINavigationController *navC = [[UINavigationController alloc]init];
      navC.view.backgroundColor = [UIColor redColor];
      
      UIViewController* vc = [[UIViewController alloc]init];
      vc.view.backgroundColor = [UIColor yellowColor];
      
      [navC pushViewController:vc animated:YES];
      
    • 也可以这样, 创建的时候,就直接添加一个控制器
      - initWithRootViewController:
      内部同样是调用- pushViewController: animated:方法
      UINavigationController *navC = [[UINavigationController alloc]initWithRootViewController:vc];
      
    • 验证:
      • 在已经使用- initWithRootViewController: vc的情况下,再次[navC pushViewController:vc animated:YES];
      • 会报错:
        Pushing the same view controller instance more than once is not supported(<UIViewController: 0xxxx>)'
        
        same - 相同得
        不支持多次推送同一个视图控制器实例`UIViewController`
        

  • 将自定义控制器,添加导航控制器里,并实现控制器之间切换。
    • 将自定义控制器OneViewController添加到UINavigationController
      OneViewController * oneVC = [[OneViewController alloc]init];
      UINavigationController *navC = [[UINavigationController alloc]init];
      [navC pushViewController:oneVC animated:YES];
      
    • 点击下一个控制,实现控制器之间的切换
      -- 在'第一个控制'的按钮点击事件里面, 
      -- 创建第2个控制器,且添加到"导航控制器",成为子控制器。
      TwoViewController *twoVC = [[TwoViewController alloc]init];
      [self.navigationController pushViewController:twoVC animated:YES];
      
      • 为什么在自定义控制器里,可以直接 .navigationController?
        • UINavigationController 继承 UIViewController
        • UINavigationControllerItem
          • UIViewController的分类
          • 里面有个navigationController 属性
          • navigationController就是当前的导航控制器
        • 自定义控制器继承自UIViewController,所以可以直接.navigationController

  • 导航控制器的入栈操作分析
  • window的根控制器 强引用 导航控制器
  • 开始的时候自定义控制器oneVCview放入栈顶控制器View里,导航控制器栈添加oneVC.
  • 自定义控制器twoVC要入栈时,栈顶控制器View会将oneVC.view移除,加入twoVC.view."导航控制器栈"加入twoVC
    注意:oneVC.view并没有销毁,因被oneVC强引用,而oneVC还在"导航控制器栈"最底部.
  • 自定义控制器threeVC入栈时,栈顶控制器View移除twoVC.view,加入threeVC.view."导航控制器栈"加入threeVC

相关文章

  • UINavigationController-02入栈操作

    入栈操作 - pushViewController: animated:给导航控制器,添加子控制器UINaviga...

  • 数据结构实验1.4:栈和队列

    实验内容 : 1.采用链式存储实现栈的初始化、入栈、出栈操作。2.采用顺序存储实现栈的初始化、入栈、出栈操作。3....

  • JVM-4 字节码指令

    常量入栈指令指令码操作码(助记符)操作数描述(栈指操作数栈)0x01aconst_nullnull值入栈。0x02...

  • 链栈的操作

    链栈的定义 链栈的操作 初始化 判断栈空 入栈 出栈

  • 数据结构:Go 数组实现栈操作

    简介 栈的特点: 单向操作 先入后出(First In Last Out) FILO 操作 压栈、弹栈、清空、创建...

  • 数据结构-栈(stack)和队列

    比如浏览器的上一步,就是栈的概念,后进先出 栈的插入和删除操作 栈的定义 栈的创建 入栈操作 出栈操作 栈的理解 ...

  • 栈的简单Java实现

    栈栈的特点是先进后出,出栈、入栈都是在栈顶操作。

  • 18. Interview-Data Structure

    1 栈 栈,操作受限的线性表,FILO,栈顶插入和删除,只有两种操作,入栈Push(插入)、出栈POP(删除)。 ...

  • 顺序栈的操作

    栈的定义 栈的操作 初始化 判断为空 入栈 出栈 获取栈顶元素

  • 算法基础——栈与队列

    一、栈 (Stack) 定义:栈是限定在表尾进行插入和删除操作的线性表。 栈的插入操作,叫作进栈,也叫压栈、入栈。...

网友评论

      本文标题:UINavigationController-02入栈操作

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