iOS开发学习笔记——导航控制器1(UINavigationController)

来源:互联网 发布:cardboard软件怎么使用 编辑:程序博客网 时间:2024/05/17 02:31

导航控制器了解与添加

官网文档:UINavigationControllerClass Reference

一、     控制器简介

1、        内容控制器(Content ViewController):主要显示内容,如视图控制器、表格控制器、集合视图控制器等。

2、        容器控制器(Container ViewController):主要容纳其他内容类控制器,主要进行控制器之间的切换,如:导航控制器、工具栏控制器。

二、     导航控制器使用(UINavigationController)

1、        使用原则类似”栈”的先进后出规则,Push入栈,Pop出栈,总显示最后操作的那个控制器,出栈之后的视图控制器会被销毁(即调用了dealloc方法)。

2、       【添加导航栏】 实例化导航控制器时,要为其添加rootViewController,一般可以使用在IB中添加(选择视图控制器,点击屏幕工具栏上方的edictor->enbed In选项下可以选择嵌入导航控制器)

3、        导航控制器对象提供以下属性(所有子控制器->数组、栈顶控制器),当然,子控制器也可以获得自身的导航控制器属性。

 

三、     UINavigationControllerDelegate协议

主要有两个方法:

•   navigationController(_:willShowViewController:animated:)
 /

•   


navigationController(_:didShowViewController:animated:)


•  

当要改变显示的控制器内容或状态时使用

其他详情设置参考及方法调用:UINavigationController使用

四、导航控制器的添加

需要理解:

a.导航控制器的根控制器是具有导航栏的。

b.导航控制器是继承UIViewController的,而不是简单的一个控件,所以从没有导航栏的控制器跳转到有导航栏的控制器时,present的是导航控制器,而不是简单的视图控制器(会跳转到黑屏)

c.导航控制器的添加不同于导航控制器内的视图控制器的切换。


如果需要使用导航栏,那么就必须生成实例对象,有两种方法

1.在IB中的storyBoard中直接添加(简单快捷),选中需要添加的子控制器,如截图:



2.使用代码的方式添加

在一般目标视图控制器(当前视图没有导航栏,子视图需要导航栏)文件中添加类似如下的代码:

<pre name="code" class="objc">    //创建一个导航控制器的对象
    UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:VC];    nav.navigationBar.backgroundColor = [UIColor redColor];    [self presentViewController:nav animated:YES completion:^{        NSLog(@"观察跳转");//特别注意:presentController的参数必须为导航栏控制器,不能为已经添加导航栏的视图控制器,否则会出错。    }];


根视图就使用导航控制器中写下如下代码:

//代码添加导航栏        let VC = ViewController()        let nav = UINavigationController(rootViewController: VC)        window?.rootViewController = nav       //注意这个时候不是viewController的实例对像。如果这里添加的是VC则会是黑色的        self.window?.backgroundColor = UIColor.whiteColor() //设置背景色,否则是黑色的


学习内容参考宏创学院»UINavigationController介绍:1-导航控制器简介

0 0
原创粉丝点击