1、创建navigation。
如果是想直接把navigation导航作为项目一开始的跟视图,把RootViewController.h文件里的nav属性放到AppDelegate.h里即可,再把RootViewController.m文件里的action的代码复制到 AppDelegate.m里的didFinishLaunchingWithOptions 方法里,最后把>
1 #import <UIKit/UIKit.h> 2 @class FirstViewController; 3 4 @interface RootViewController : UIViewController 5 6 @property (strong,>
在RootViewController.m 文件里的随意一个自定义action里:
1 - (IBAction)btnClick:(UIButton *)sender { 2 3 //创建一个viewcontroller 4 FirstViewController *fristview =[[[FirstViewController> [[[UINavigationController alloc] initWithRootViewController:fristview] autorelease]; 9 10 11 //初始化UINavigationController(方式二) 12 // >13 // [self.nav>18 19 20 //跳转到FirstView页面 21 [self presentViewController:self.nav animated:YES completion:nil]; 22 23 24 //这种写法一般用于往view里添加一些小控件,如button label textField之类的,不适宜用于页面跳转 25 // [self.view addSubview:self.nav.view]; 26 27 28 }
2、设置viewcontroller的navigationItem属性和 toolbar、toolbarItem(1)firstViewcontroller的navigation属性和toolbarItem属性。代码在firstviewcontroller.m的viewdidLoad方法里
每个viewcontroller都有一个navigationItem属性(只在被加载到导航堆栈里才有效),navigationItem属性里又有5个属性:UIBarButtonItem类型的leftBarButtonItem、rightBarButtonItem和backBarButtonItem,NSString类型的title(或者viewcontroller属性的titleView)、prompt。
1 - (void)viewDidLoad 2 { 3 [super>@"首页"; 9 10 //在title上面再加多一行,但这样子就会造成导航栏的宽度变宽 11 // >12 13 //设置rightbarbuttonitem 14 UIBarButtonItem *rightbar = [[[UIBarButtonItem>> [[UIBarButtonItem> [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:nil action:nil]; 29 UIBarButtonItem *flexItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 30 31 //toolbar是整个navigation堆栈里的view共同的,但toolbar上面的items却是每个view单独拥有的 32 //现在只是设置了当前view的toolbaritem,与其他view的toolbaritme是没有关系的 33 [self setToolbarItems:[NSArray arrayWithObjects:flexItem, three, flexItem, four, flexItem, nil]]; 34 35 [three release]; 36 [four release]; 37 [flexItem release]; 38 39 40 }
页面效果如下:
(2)、secondviewcontroller的navigationItem和toolbarItem
代码在viewdidLoad方法里
1 - (void)viewDidLoad 2 { 3 [super> [[[UIBarButtonItem> [[[UIBarButtonItem> rightbar; 12 > leftbar; 13 14 //当前view在navigation堆栈里不是rootview,所以把该viewpush到navigation堆栈里时,tabbar左边会显示backbarbutton 15 //如果给当前view设置了leftbarbutton,会把把backbarbutton覆盖掉,想同时显示两者,需如下设置: 16 > YES; 17 18 19 20 //设置当前view的toolbar可见.因为有可能从一个toolbar不可见的view导航到当前view 21 > NO; 22 23 }
效果如下:
(3)、thirdviewcontroller的navigationItem和toolbaritem
1 - (void)viewDidLoad 2 { 3 [super>@"第三页"; 5 // Do> [[[UIBarButtonItem> rightbar; 14 15 // NSArray *array = @[@"排骨", @"牛排"]; 16 17 //设置titleview,会覆盖title 18 UISegmentedControl *segment = [[[UISegmentedControl> UISegmentedControlSegmentCenter; 20 21 > segment; 22 }效果如下:
8、添加UIBarButtonItem
bar ButtonItem分左右UIBarButtonItem。我们把左右的都添加上去。
在RootViewController.m中添加代码如下:
[cpp] view>这样添加了UIBarButtonItem了,效果如下:
- self.navigationItem.leftBarButtonItem = leftButton;
- UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(selectRightAction:)];
- self.navigationItem.rightBarButtonItem = rightButton;<p class="p1">}</p>
这里重点介绍下
UIBarButtonItem *leftButton = [[UIBarButtonItemalloc]initWithBarButtonSystemItem:UIBarButtonSystemItemActiontarget:selfaction:@selector(selectLeftAction:)];
UIBarButtonSystemItemAction的风格,这是系统自带的按钮风格,看下图,你不用一个个试验,你也知道想用那个item,如下图: