用UINavigationController实现在两个页之间导航(下)——书第七章 P143
(续前)
第七步:UINavigationItem和UIBarButtonItem
通常每个(指任何)视图控制器都可以定义一个UINavigationItem。UINavigationItem类就是实现这些功能的,这个类包含了如下表:
左边按钮 |
标题视图 |
右边按钮 |
leftBarButtonItem |
titleView |
rightBarButtonItem |
当它所属的视图控制器在导航控制器所控制的堆栈顶部时,即调用(也就是说该视图控制器即将要显示时),系统自动显示该视图控制器的UINavigationItem,开发人员无需编写任何代码来调用UINavigationItem,但之前必须要设置好。上面程序代码中已经有定制好的导航栏左右按钮,简述说明如下:
定制返回按钮:在缺省情况下,下一页上的返回按钮上的文字是上一页的标题,可以在程序中修改为其它文字,要记住!返回按钮是放在上一页的视图控制器上的,所以必须在上一页对应的视图控制器的实现文件(*.m)中去修改。如在上面lvyouAppDelegate.m中有如下代码:(图中绿色代码部分)
- (BOOL)application UIApplication *)application didFinishLaunchingWithOp
[[UINavigationController alloc] init];//初始化导航控制器
//因为系统已经实现了返回功能。Style是显示风格
[[cityViewController alloc] init];
}
在导航控制栏上添加系统按钮和左右按钮。
首先在第一页的导航栏上添加一个“折扣信息”按钮,如在上面所述,要记住!返回按钮是放在上一页的视图控制器上的,所以必须在上一页对应的视图控制器的实现文件(*.m)中去修改。这里要求在第一页的导航栏上添加一个“折扣信息”按钮(显然,这不是返回上一页按钮,而是在导航控制栏上添加一个“左按钮”),故可在当前视图控制器的实现文件(*.m)中去修改,即cityViewController.m中去修改,在它原代码中有如下代码:(图中绿色代码部分)
- (void)viewDidLoad {
//创建一个有边框的文体按钮,按下后,调用视图控制器上的discount方法
UIBarButtonItem *discountButton =
[[UIBarButtonItem alloc]
}
其次在第二页的导航栏上添加一个“系统按钮”(右边按钮),根据上面分析,这同样不以至于返回按钮,故可在当前视图控制器的实现文件(*.m)中去修改,即CityDetailViewController
- (void)viewDidLoad {
city;//获取从前一个页面传来的数据
[[UIBarButtonItem alloc]
self.navigationItem.rightBarButtonItem = rightButton;
}
第八步:标签栏控制器(UITabBarController)
标签栏控制器是用数组来管理所控制的视图控制器。这些被管理的视图控制器即可以是导航控制器,也可以是一般的视图控制器。另外,这些视图控制器之间是平等关系,而不像导航控制器所管理的视图控制器之间是所谓的“上下级关系”。缺省情况下,标签栏上显示的是各个视图的标题,如下图显示了五个标签。
iPhone OS的标签栏最多可显示五个标签
当你选择某一个视图控制器时,该视图控制器就执行。当你选择另一个视图控制器时,当前视图控制器的状态被保留。非常类似微软中的多窗口的概念。
关系:
标签栏控制器 UITabBarController |
导航控制器 (旅游信息) |
一般视图控制器 cityViewController |
|
一般视图控制器
CityDetailViewController |
|||
一般视图控制器 (美食天地) MeiShiTianDi |
|