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];
- 验证:
- 将自定义控制器,添加导航控制器里,并实现控制器之间切换。
- 将自定义控制器
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的根控制器 强引用 导航控制器
- 开始的时候
自定义控制器oneVC
将view
放入栈顶控制器View
里,导航控制器栈添加oneVC
.
- 当
自定义控制器twoVC
要入栈时,栈顶控制器View
会将oneVC.view
移除,加入twoVC.view
."导航控制器栈"加入twoVC
。
注意:oneVC.view
并没有销毁,因被oneVC强引用
,而oneVC
还在"导航控制器栈"最底部.
- 当
自定义控制器threeVC
入栈时,栈顶控制器View
移除twoVC.view
,加入threeVC.view
."导航控制器栈"加入threeVC
。
本文标题:UINavigationController-02入栈操作
本文链接:https://www.haomeiwen.com/subject/slfpjktx.html
网友评论