UINavigationController介绍

来源:互联网 发布:电路图仿真软件 编辑:程序博客网 时间:2024/06/01 09:05


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     //设置rightbarbuttonitem14     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左边会显示backbarbutton15     //如果给当前view设置了leftbarbutton,会把把backbarbutton覆盖掉,想同时显示两者,需如下设置:16    > YES;17 18     19     20     //设置当前view的toolbar可见.因为有可能从一个toolbar不可见的view导航到当前view21    > NO;22     23 }


效果如下:

 

(3)、thirdviewcontroller的navigationItem和toolbaritem

 1 - (void)viewDidLoad 2 { 3     [super>@"第三页"; 5     // Do> [[[UIBarButtonItem> rightbar;14     15    // NSArray *array = @[@"排骨", @"牛排"];16     17     //设置titleview,会覆盖title18     UISegmentedControl *segment = [[[UISegmentedControl> UISegmentedControlSegmentCenter;20     21    > segment;22 }

效果如下:

 

8、添加UIBarButtonItem

bar ButtonItem分左右UIBarButtonItem。我们把左右的都添加上去。

在RootViewController.m中添加代码如下:

[cpp] view>
  •     self.navigationItem.leftBarButtonItem = leftButton;  
  •       
  •     UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd  target:self action:@selector(selectRightAction:)];  
  •     self.navigationItem.rightBarButtonItem = rightButton;<p class="p1">}</p>  
  • 这样添加了UIBarButtonItem了,效果如下:



    这里重点介绍下

    UIBarButtonItem *leftButton = [[UIBarButtonItemalloc]initWithBarButtonSystemItem:UIBarButtonSystemItemActiontarget:selfaction:@selector(selectLeftAction:)];

    UIBarButtonSystemItemAction的风格,这是系统自带的按钮风格,看下图,你不用一个个试验,你也知道想用那个item,如下图:





    0 0
    原创粉丝点击