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方法。