UINavigationController详解(一)

@UINavigationControlle简介:

1.导航控制器,专门管理具有层级关系内容的导航

2.采用栈的方式管理所有controller,每个controller管理各自的视图

3.推出显示一个新的controller

4.提供返回上一级controller的默认button和方法



@UINavigationControlle结构:

1.它是UIViewController的子类,因此它也由view属性

2.它的view包含3个子视图:navigationBar     contentView(不是属性)      toolbar

3.导航控制器使用这些对象实现导航界面,我们负责提供这些对象,进行展示,参考下图(苹果官方):

                        UINavigationController view层级



@UINavigationControlle的创建:

1.它以栈的方式管理所控制的视图,至少要有一个被管理的UIViewController作为rootViewController

2.导航界面的对象会被同时创建

3.设置delegate,监控导航堆栈的变化,即viewControllers,topController,visibleController等等




代码示例:

    HMTViewController * hmtView = [[HMTViewController alloc]init];
    
    UINavigationController * rootNavigation = [[UINavigationController alloc]initWithRootViewController:hmtView];
    NSLog(@"%@",rootNavigation);
    
    self.window.rootViewController = rootNavigation;

@ UINavigationControlle导航方法:

1.推出下一级controller(入栈):

    pushViewController:animated:

2.返回上一级controller(出栈):

    popViewControllerAnimated:                         // 返回上一级 

    popToRootViewControllerAnimated:              // 返回根视图(中间无论多少个视图都全部被出栈,没了)

    // @property(nonatomic,copy)NSArray *viewControllers;// The current view controller stack.

    // 通过[self.navigationController.viewControllers objectAtIndex:n] 来选定指定视图

    popToViewController:animated:                     //  返回指定视图

3.导航控制器提供已有的控件实现返回上一级(即被根视图推出的View都自带一个返回 <Back 按钮)

代码示例:

@这里必须要说一下self.navigationController  

// If this view controller has been pushed onto a navigation controller, return it.

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    UIButton *push = [UIButton buttonWithType:UIButtonTypeSystem];
    push.frame =CGRectMake(100, 100, 200, 200);
    [push setTitle:@"下一页" forState:UIControlStateNormal];
    [push addTarget:self action:@selector(pushNextController) forControlEvents:(UIControlEventTouchUpInside)];
    [self.view addSubview:push];
    
	// Do any additional setup after loading the view.
}

- (void)pushNextController{
    NSLog(@"%@",self.navigationController);
    HMTNext2ViewController * hmtNext2 = [[HMTNext2ViewController alloc]init];
    [self.navigationController pushViewController:hmtNext2 animated:YES];
    
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值