导航控制器是以栈的方式管理其子视图控制器,凡是当前处在栈顶的视图才会被显示。
导航控制器可以用代码和IB两种方式实现,现简单介绍:一,代码方式
首先自定义一个继承自UINavigationController类的自定义类。
然后在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions中
使用
- (instancetype)initWithRootViewController:(UIViewController *)rootViewController方法或 其他初始化方法,或则直接设置
其viewControllers来制定根控制器,这里的根控制器是导航界面第一个显示的控制器。
其他重要方法及说明:
1.在前一个视图控制器中使用- (void)pushViewController:(UIViewController*)viewController animated:(BOOL)animated方法来
把下一个要显示的视图压入栈顶;
2.修改navigationItem属性的title属性来修改当前导航页标题;
3.设置navigationItem属性的leftBarButtonItem(。。)和rightBarButtonItem属性来修改当前导航页的左右按钮;
4.使用如下方法设置按钮名称及触发后执行的方法
- (instancetype)initWithBarButtonSystemItem:(UIBarButtonSystemItem)systemItem
target:(id)target
action:(SEL)action
- (instancetype)initWithTitle:(NSString *)title
style:(UIBarButtonItemStyle)style
target:(id)target
action:(SEL)action
5.要在前一视图控制器中设置其在下一视图控制器中的返回按钮,如A->B,则需在A中设置从B返回A的返回按钮,
需设置navigationItem属性的backBarButtonItem属性。
6.若要从某个导航页返回到根视图或指定视图可使用如下两种方法
- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated
- (NSArray *)popToViewController:(UIViewController *)viewController
animated:(BOOL)animated
7.在每个视图中可使用self.navigationController来获取管理它的导航控制器。
二,IB方式
首先拖出navigationController视图控制器,一般初始会设定一个tableViewController作为根控制器,可以更改。
现以tableViewController为根控制器为例说明。
1.可直接修改控制上面的title来修改标题。
2.设置完cell后,选中点击进行切换界面的cell按住鼠标右键拖至下一个视图控制器(需先从菜单中拖出),
在弹出的菜单中选中segue->show或者accessory->show(前者是点击cell除附加视图外的部分,后者是点击附加视图),若对同一个
cell两种情况都有可选中对应的连接线,设置其ID标识,然后在程序中通过segue.identifier
来区分。
重要的方法为
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
对于tableViewController传入的sender为cell对象。
通过[segue destinationViewController]获取要转换到的视图控制器对象。