博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift语言IOS8开发战记8.NavigationController
阅读量:5924 次
发布时间:2019-06-19

本文共 1686 字,大约阅读时间需要 5 分钟。

       在IOS应用中,可以采用结构化程度更高的场景进行布局,其中有两种最流行的应用程序布局方式,分别是使用导航栏控制器和选项卡栏控制器。导航控制器能够让用户从一个屏幕切换到另一个屏幕,这样可以显示更多细节。选项卡栏控制器常用于开发包含多个屏幕的应用程序,其中每个选项卡都显示一个不同的场景,让用户能够与一组控件交互。

       之前我们已经用了很多次的使用了导航控制器UIViewController,它的主要功能是控制屏幕的切换,提供一个显示用的view界面,同时包含view的加载、卸载事件的重定义功能。在IOS应用中,导航控制器(UINavigatinoController)可以管理一系列显示层次型信息的场景。也就是第一个场景显示关于特定场景的高级视图,第二个场景用于进一步描述,第三个场景再进一步描述,以此类推。通过导航管理器可以管理这种场景间的过渡,它会创建一个视图控制器“栈”,栈底是根视图控制器。当程序需要在多个view之间切换的时候,可以使用UINavigationController。这一话我们要添加一个导航栏,添加导航控制器需要在初始化的时候添加。打开类AppDelegate,会看到一个叫application的方法。看到方法体中的注释如下:

 // Override point for customization after application launch.

在其中添加一个导航,代码如下:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {               let  navController = UINavigationController(rootViewController: ViewController())        self.window?.rootViewController = navController        self.window?.makeKeyAndVisible() //设置可见        return true    }

运行效果如下:

上面的红框区域就是一个导航栏,有一点需要注意,我们在创建NavigationController时的参数为rootViewController:ViewController(),ViewController保留了我们之前设置的tableView的全部设计,笔者之前没注意,在写rootViewController类型的时候写成了UIViewController,结果运行后除了导航栏其他全是黑的,所以大家一定要注意。

导航栏中都是使用导航项(UINavigationItem)实例来填充的,默认情况下场景的导航项包含一个标题和一个back按钮。我们需要在ViewController中定义UINavigationItem的内容,现在我想给我这个View取个名字叫“cgGo”,在ViewController中的viewDidLoad方法中增加如下代码:

self.navigationItem.title = "cgGo"
运行结果如图:

现在来试一下点击某一行跳转到下一个页面,定义一个控制器,新建文件,类型还是cocoa touch class,命名为DetailViewController。在点击的代理方法中,把之前跳出的ActionSheet的代码注释掉,改成如下代码:

self.navigationController?.pushViewController(DetailViewController(), animated: true)
运行后点击屏幕划出一个新的界面:

我们看到的这个黑色屏幕就是DetailViewController,在这个类中进行编辑,就可以得到我们想要的结果,这就要求两个页面间要传参数,下一话再来解决这个问题。

你可能感兴趣的文章
基于事件驱动的DDD领域驱动设计框架分享(附源代码)
查看>>
Linux备份ifcfg-eth0文件导致的网络故障问题
查看>>
2018年尾总结——稳中成长
查看>>
$resource in AngularJS
查看>>
java虚拟机学习笔记 【1】
查看>>
DUBBO笔记
查看>>
nginx php上传大文件的设置(php-fpm)
查看>>
MySQL 运行状态监控方法
查看>>
vs2008中在解决方案资源管理器查看当前打开文件
查看>>
ubuntu14.04 鼠标闪烁问题
查看>>
jQuery Lightbox(balupton版)图片展示插件demo
查看>>
Elasticsearch集群的简单搭建
查看>>
SCRT-SSH传输文件
查看>>
Python非常cool的svg格式chart生成库pygal
查看>>
Telnet部署与启动 windows&&linux
查看>>
行列式的乘法定理
查看>>
有1000瓶水,3个瓶子可以再换1瓶,一共可以喝多少瓶?
查看>>
Search in Rotated Sorted Array ||
查看>>
NUC_HomeWork1 -- POJ2067(最短路)
查看>>
卸载mysql
查看>>