zoukankan      html  css  js  c++  java
  • iOS学习之UINavigationController详解与使用(三)ToolBar

    1、显示Toolbar 

    在RootViewController.m的- (void)viewDidLoad方法中添加代码,这样Toobar就显示出来了。

     

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

    2、在ToolBar上添加UIBarButtonItem

    新建几个UIBarButtonItem,然后以数组的形式添加到Toolbar中

     

    1. UIBarButtonItem *one = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:nil action:nil];  
    2.     UIBarButtonItem *two = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemBookmarks target:nil action:nil];  
    3.     UIBarButtonItem *three = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:nil action:nil];  
    4.     UIBarButtonItem *four = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:nil action:nil];  
    5.     UIBarButtonItem *flexItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];  
    6.     [self setToolbarItems:[NSArray arrayWithObjects:flexItem, one, flexItem, two, flexItem, three, flexItem, four, flexItem, nil]];  
    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时,这个才起效果。

     

    3、动态添加Toolbar

    我们在SecondView添加动态的Toolbar。

    在SecondViewController.h添加

     

    1. #import <UIKit/UIKit.h>  
    2.   
    3. @interface SecondViewController : UIViewController  
    4. {  
    5.     UIToolbar *toolBar;  
    6. }  
    7. @end  
    #import <UIKit/UIKit.h>
    
    @interface SecondViewController : UIViewController
    {
        UIToolbar *toolBar;
    }
    @end
    

    在SecondViewController.m添加

     

    1. - (void)viewDidLoad  
    2. {  
    3.     [super viewDidLoad];  
    4.   
    5.     [self.navigationController  setToolbarHidden:YES animated:YES];  
    6.   
    7.     UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch target:self action:@selector(gotoThridView:)];  
    8.     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)];  
    9.     [toolBar setBarStyle:UIBarStyleDefault];  
    10.     toolBar.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;  
    11.     [toolBar setItems:[NSArray arrayWithObject:addButton]];  
    12.     [self.view addSubview:toolBar];  
    13.        
    14.     // Do any additional setup after loading the view from its nib.  
    15. }  
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        [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];
         
        // Do any additional setup after loading the view from its nib.
    }

    先把RootView时显示的Toobar隐藏

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

        [toolBarsetItems:[NSArrayarrayWithObject:addButton]]; 

    BarButtonItem用 的是UIBarButtonSystemItemSearch, 效果如下:

    4、新建ThridView,从SecondView跳转到

    Commad+N新建一个ThridViewController,

    这个addButton跳转到ThridView

     

    1. -(void)gotoThridView:(id)sender  
    2. {  
    3.     ThridViewController *thridView = [[ThridViewController alloc] init];  
    4.     [self.navigationController pushViewController:thridView animated:YES];  
    5.     thridView.title = @"Thrid View";  
    6.   
    7. }  
    -(void)gotoThridView:(id)sender
    {
        ThridViewController *thridView = [[ThridViewController alloc] init];
        [self.navigationController pushViewController:thridView animated:YES];
        thridView.title = @"Thrid View";
    
    }

    跳转Second到Third效果:

     

    到此UINavigationController练习的差不多了。

    前面两篇:

    iOS学习之UINavigationController详解与使用(一)添加UIBarButtonItem

    iOS学习之UINavigationController详解与使用()页面切换和segmentedController  

     

     

    例子代码:https://github.com/schelling/YcDemo

    著作权声明:本文由http://blog.csdn.net/totogo2010/原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢
  • 相关阅读:
    微信小程序之----加载中提示框loading
    微信小程序之----消息提示框toast
    微信小程序之----弹框组件modal
    浅析浏览器的回流与重绘 (Reflow & Repaint)
    关于input的一些问题解决方法分享
    关于js中 toFixed()的一个小坑
    浅谈js中null和undefined的区别
    浅谈JS中的闭包
    浅谈JS中的浅拷贝与深拷贝
    css设置居中的方案总结
  • 原文地址:https://www.cnblogs.com/geek6/p/3872172.html
Copyright © 2011-2022 走看看