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
网友评论