UINavigationController

1、UINavigationController导航控制器如何使用

UINavigationController可以翻译为导航控制器,在对象管理上,导航控制器使用了导航堆栈。调用pushViewControllerAnimated:方法可以将视图控制器推入栈顶,调用popViewControllerAnimated:方法可以将视图控制器弹出堆栈。

2、UINavigationController的结构组成

看下图,UINavigationController有Navigation bar  ,Navigation View,Navigation toobar等组成。


3、添加UIBarButtonItem

UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(selectLeftAction:)];  

    self.navigationItem.leftBarButtonItem = leftButton;     

    UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd  target:self action:@selector(selectRightAction:)];  

self.navigationItem.rightBarButtonItem = rightButton;

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

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


 

4、添加segmentedController

在nav bar这样的效果是如何实现的呢? UISegmentedControl

viewDidLoad添加如下代码:

NSArray *array = [NSArray arrayWithObjects:@"鸡翅",@"排骨", nil];  

   UISegmentedControl *segmentedController = [[UISegmentedControl alloc] initWithItems:array];  

   segmentedController.segmentedControlStyle = UISegmentedControlSegmentCenter;  

   [segmentedController addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];  

   self.navigationItem.titleView = segmentedController;

4、自定义backBarButtonItem

 

左上角的返回上级View的barButtonitem的名字是上级目录的Title,如果title或者适合做button的名字,怎么办呢?我们可以自己定义

代码如下:

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"根视图" style:UIBarButtonItemStyleDone target:nil action:nil];  

   self.navigationItem.backBarBu  

5、自定义title

UINavigationController的title可以用别view替代,比如用UIButton UILable,例如:

self.navigationItem.titleView = button;

6、Toolbar


6.1显示Toolbar 

[self.navigationController  setToolbarHidden:NO animated:YES]; 6.2、在ToolBar上添加UIBarButtonItem

UIBarButtonItem *one = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:nil action:nil];  

    UIBarButtonItem *two = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemBookmarks target:nil action:nil];  

    UIBarButtonItem *three = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:nil action:nil];  

    UIBarButtonItem *four = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:nil action:nil];  

    UIBarButtonItem *flexItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];  

    [self setToolbarItems:[NSArray arrayWithObjects:flexItem, one, flexItem, two, flexItem, three, flexItem, four, flexItem, nil]];  

注意:用  [self.navigationController.toolbar setItems:(NSArray *)animated:<#(BOOL)#>]这个方法添加item是不起效果的。下面我动态自己添加Toolbar时,这个才起效果。

6.3、动态添加Toolbar

先把RootView时显示的Toobar隐藏

   [self.navigationController setToolbarHidden:YESanimated:YES];然后把新建的Toolbar添加的SecondView中,并为Toobar设置了一个Item.  

   [toolBarsetItems:[NSArrayarrayWithObject:addButton]]; 

BarButtonItem用 的是UIBarButtonSystemItemSearch,

UIToolbar *toolBar; 

[self.navigationController  setToolbarHidden:YES animated:YES];  

    UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch target:self action:@selector(gotoThridView:)];  

    toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0.0, self.view.frame.size.height - toolBar.frame.size.height - 44.0, self.view.frame.size.width, 44.0)];  

    [toolBar setBarStyle:UIBarStyleDefault];  

    toolBar.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;  

    [toolBar setItems:[NSArray arrayWithObject:addButton]];  

[self.view addSubview:toolBar]; 

7、页面跳转

[self.navigationController pushViewController:thridView animated:YES]; 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值