UINavigationController记录

首先看则新闻:

iOS 6也玩功能彩蛋 顶部状态栏会变色

以往的彩蛋只会出现在各大厂商开发的游戏大作中,而如今苹果公司也玩起了彩蛋?

在上周WWDC 2012苹果研发者大会上,苹果公司曝光了其新系统iOS 6的近200多项新功能,虽然没有什么特别的惊喜,但也足以让果粉大饱眼福。可细心的玩家在下载了iOS 6预览版之后,竟发现了好多有趣的苹果公司尚未公之于众的细节,比如同性恋图标,最有意思的是,屏幕顶部状态栏的颜色会发生变化。

iOS 6预览版 顶部状态栏颜色变化(图片来自网络)

iOS 6预览版 顶部状态栏颜色变化(图片来自网络)

iOS 6预览版 顶部状态栏颜色变化(图片来自网络)

由上图可以看出,随着打开应用程序的不同,顶部状态栏的颜色也发生了变化。不过并不是所有的应用都支持状态栏变色,目前大多数应用均不支持这个功能,只有极少数几个应用的颜色会改变。这是不是一项新功能?以后会不会有越来越多的应用会支持变色?我们不得而知,不过希望苹果公司的开发者们能带给果粉更多的惊喜。



这个今天可把我害惨了。我还以为什么挡住了状态栏,各种暴力调试,发现没什么问题。尴尬



NavigationBar的风格、标题怎么设置?back button怎么设置?


导航栏风格

导航控制器可以用几种不同的风格来显示自身。默认风格就是标准的灰色外观。目前支持三种不同的风格,如表3-1所示。

表3-1

风    格

描    述

UIBarStyleDefault

默认风格;灰色背景,白色文字

UIBarStyleBlackOpaque

纯黑色背景,白色文字

UIBarStyleBlackTranslucent

透明黑色背景,白色文字

风格是通过barStyle属性来设置的。这个属性属于导航控制器,而不是视图控制器,因此在各个视图之间来回切换时,此属性可以保持一致:

self.navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;


     按我的理解,navigationBar的标题实际上是当下视图控制器的名字,至于navigationItem则是一个集合,它的一个property叫做title,你可以认为它和视图控制器的title是一个东西。使用navigationItem是有条件的,因为它依赖于视图控制器的存在,它可以从视图控制器处获取title,也可以通过设置它来修改navigationItem。但前提是视图控制器存在。一个小技巧:设置当前视图控制器的title为应用名:

self.title = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"];


使用其navigationItem时,首先要确保UINavigationController 视图已经加载到ViewController中。

其代码为:

  1. [[UINavigationController alloc] initWithRootViewController:viewController];
上面这个首先可以保证Bar被加载,其次视图控制器也被加载。backBarbuttonItem属于 UIBarButtonItemUIBarButtonItem的父类UIBarItem的title属性描述:  You should set this property before adding the item to a bar. The default value is nil。也就是说完成了上面的步骤之后,还是只有navigationItem不是nil,它里面的一些控件东西还是nil的,譬如backBarbuttonItem。

 When this property is nil, the navigation item uses the value in its title property to create an appropriate back button. If you want to specify a custom image or title for the back button, you can assign a custom bar button item (with your custom title or image) to this property instead.虽然这个property可能一直是nil,但是navigation Item会利用它自身的title property来创建一个back button。当用户自己创建了一个back button,并把它与这个property相连的时候,就会使用新的backbutton。在这里,我们着重阐述了navigation item的title和back button的来源。适用于back button的使用方法,也适用于另外的Item。



如何设置Next Page button和back button?

   我们定义Next Page button在第一个视图控制器的页面,我们要自行创建一个RightBarButtonItem,在这个button item里完成打开下一页的行为。

UIBarButtonItem *nextButton =[[UIBarButtonItem alloc] initWithTitle:@"Next"
                                        style:UIBarButtonItemStyleBordered
                                        target:self action:@selector(nextPage)];
    [self.navigationItem setRightBarButtonItem:nextButton animated:YES];

- (void)nextPage{
    NextViewController *nextController = [[NextViewController alloc]initWithNibName:@"NextViewController" bundle:nil];
    [self.navigationController pushViewController:nextController animated:YES];
}

就是那么简单的2部分。而back button就更方便:

 UIBarButtonItem *temporaryBarButtonItem=[[UIBarButtonItem alloc] init];  
temporaryBarButtonItem.title=@"Back";  
self.navigationItem.backBarButtonItem = temporaryBarButtonItem;  

当然也可以参照上面的例子,这样写:

UIBarButtonItem *backButton =[[UIBarButtonItem alloc] initWithTitle:@"Back"
                                      style:UIBarButtonItemStyleBordered
                                      target:nil action:nil];
     self.navigationItem.backBarButtonItem = backButton;

此时,back是一个默认行为,不需要我们用代码去实现,设置target和action均为nil。

关于按钮的风格:

定义按钮的风格。可用的风格有:

UIBarButtonItemStylePlain:默认按钮风格;按下时会闪动。

UIBarButtonItemStyleBordered:与UIBarButtonItemStylePlain相同,但显示的按钮有边框。

UIBarButtonItemStyleDone:显示一个蓝色按钮,提醒用户编辑完毕时应该点触(tap)该按钮。
如果你希望禁用一个已有的导航栏按钮,有两种方法可以选择。如果要令按钮完全消失,可以用你稍早之前看到的按钮属性,将其设置为nil:

 
 
  1. self.navigationItem.leftBarButtonItem = nil;
如果要令按钮仍然可见,只是变灰无法使用,可以将按钮的enabled属性设置为NO,就能够禁用按钮:

 
 
  1. myButton.enabled = NO;







评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值