1>使用步骤
1,初始化UINavigationController
2,设置UIWindow的rootViewController(根控制器)为UINavigationController(导航控制器)
3,根据具体情况,通过push方法添加对应个数的子控制器
2>
1,添加子控件
[导航控制器名
pushViewController:子控件名
animated
:
YES
];
2,导航控制器发现栈顶多了东西,便会创建他的view。显示在导航控制器上面的永远是栈顶控制器的view。
3,点击Back后,栈顶的控制器被销毁,对应的view也就销毁,此时导航显示的是新的栈顶控制器的view。
3>
导航控制器用来存放子控制器的栈:childViewControllers 和 viewControllers (两个数组)
因此也可以这样添加子控制器:
[nav
addChildViewController
:one];
或者往数组里加
nav.
viewControllers
=
@[
one
]
; (childViewControllers只读,不可以)
4》关于手动出栈
1,
//
把当前栈顶控制器销毁
[self.navigationController popViewControllerAnimated:YES];
2,
//
把栈里所有控制器销毁,只留根控制器
[self.navigationController popToRootViewControllerAnimated:YES];
3,
//
回到指定控制器
[self.navigationController popToViewController:one animated:YES];
5>
1,一个导航控制器就一个导航条
2,导航栏上面显示什么内容由栈顶控制器的navigationItem属性决定。
在当前栈顶控制器的viewDidLoad里设置。
3,self.navigationItem.left/right/title/titleView
4,左上角返回键的内容由上一个控制器决定
// 修改 “ 返回键 ” 的内容
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"
返回
"
style
:
UIBarButtonItemStyleDone
target
:
nil
action
:
nil
];
6》通过stroyboard创建控制器
1,脱线不能往回拖,不是返回,而是创建一个新的控制器,不利于内存,打乱顺序。
真的需要返回,用pop方法。