iOS开发UI篇 -- UINagivationController

 为了便于管理控制器,iOS提供了2个比较特殊的控制器
UINavigationController

UITabBarController

---------------------------------------------------

1、UINavigationController常用属性

UINavigationController以栈的形式保存子控制器
@property(nonatomic,copy) NSArray *viewControllers;
@property(nonatomic,readonly) NSArray *childViewControllers;

使用push方法能将某个控制器压入栈
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated; 
使用pop方法可以移除控制器
将栈顶的控制器移除
- (UIViewController *)popViewControllerAnimated:(BOOL)animated;
回到指定的子控制器  (少用)
- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated;
回到根控制器(栈底控制器)
- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated;


---------------------------------------------------

2、导航控制器通过栈来管理子控制器

导航控制器是通过栈的形式来管理子控制器的(先进后出)

显示在导航控制器上得view永远是栈顶控制器的view

一个导航控制器只有一个导航条,也就是说所有的自控制器公用一个导航条。

显示在导航控制器上面的永远是栈顶控制器的view,在栈中的View是不会被销毁的,当pop出了栈,view才会被销毁
只会有一个导航栏,所以导航栏上面显示什么内容由栈顶控制器决定
但是!有个特例!左上角的返回按钮是由上一个Controller决定的     


-------------------------------------------------

3、如何修改导航栏的内容

导航栏的内容由栈顶控制器的navigationItem属性决定

显示在导航控制器上面的永远是栈顶控制器的view,在栈中的View是不会被销毁的,当pop出了栈,view才会被销毁
只会有一个导航栏,所以导航栏上面显示什么内容由栈顶控制器决定
但是!有个特例!左上角的返回按钮是由上一个Controller决定的


UINavigationItem有以下属性影响着导航栏的内容
左上角的返回按钮
@property(nonatomic,retain) UIBarButtonItem *backBarButtonItem;
中间的标题视图
@property(nonatomic,retain) UIView          *titleView;
中间的标题文字
@property(nonatomic,copy)   NSString        *title;
左上角的视图
@property(nonatomic,retain) UIBarButtonItem *leftBarButtonItem;
UIBarButtonItem *rightBarButtonItem  右上角的视图
@property(nonatomic,retain) UIBarButtonItem *rightBarButtonItem;

4、如何为导航栏添加子控制器

- (IBAction)jump {
    // 展示MJTwoViewController,在第二个Vc中添加一个导航栏
    MJTwoViewController *two = [[MJTwoViewController alloc] init];
    
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:two];
    
    [self presentViewController:nav animated:YES completion:^{
        NSLog(@"展示MJTwoViewController完毕.......");
    }];
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值