`

UINavigationController详解与使用(三)ToolBar

    博客分类:
  • ios
ios 
阅读更多
UINavigationController详解与使用(二)页面切换和segmentedController  接上篇,我们接着讲Navigation 的Toolbar。

运行效果图:

第一个界面
[img]

[/img]

第二个界面
[img]

[/img]

第三个界面
[img]

[/img]

1、显示Toolbar
在RootViewController.m的- (void)viewDidLoad方法中添加代码,这样Toobar就显示出来了。
[self.navigationController  setToolbarHidden:NO animated:YES];


2、在ToolBar上添加UIBarButtonItem
新建几个UIBarButtonItem,然后以数组的形式添加到Toolbar中
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添加
#import <UIKit/UIKit.h>

@interface SecondViewController : UIViewController
{
    UIToolbar *toolBar;
}
@end


在SecondViewController.m添加:
- (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]];

4、新建ThridView,从SecondView跳转到

Commad+N新建一个ThridViewController,

这个addButton跳转到ThridView
-(void)gotoThridView:(id)sender
{
    ThridViewController *thridView = [[ThridViewController alloc] init];
    [self.navigationController pushViewController:thridView animated:YES];
    thridView.title = @"Thrid View";

}


动态添加的时候,当从第二个View返回rootView的时候,rootView里面的toolBar消失了,该怎么办呢?
在RootViewController.m中添加该句,就可以了
-(void)viewWillAppear:(BOOL)animated{
[self.navigationController setToolbarHidden:NO animated:YES];
}




如何给UIToolBar 添加 多个UIBarButtonItem . 在写一遍:
//首先需要创建一个NSMutableArray 
NSMutableArray *buttons=[[NSMutableArray  alloc]initWithCapacity:3];
[buttons  autorelease];

//创建一个 UIBarButtonItem 系统刷新按钮  并且加入到Array中
UIBarButtonItem   *freshButton=[[UIBarButtonItem alloc]  initWithBarButtonSystemItem: UIBarButtonSystemItemRefresh     target:self   action:@selector(OnrefreshMap:)];
[buttons addObject:freshButton];
[freshButton release];
//创建一个空格 ,加入到array,用来将下面加入的按钮按照右边对齐
UIBarButtonItem   *SpaceButton=[[UIBarButtonItem alloc]  initWithBarButtonSystemItem: UIBarButtonSystemItemFlexibleSpace     target:nil   action:nil];
[buttons addObject:SpaceButton];
[SpaceButton release];

//创建一个 系统 搜索按钮,加入到array,放到右边
UIBarButtonItem   *searchSelfButton=[[UIBarButtonItem alloc]  initWithBarButtonSystemItem: UIBarButtonSystemItemSearch     target:self   action:@selector(OnFindSelf:)];
[buttons addObject:searchSelfButton];
[searchSelfButton release];

//最后,将array 设置给toolbar
[toolbar setItems:buttons animated:YES];
[toolbar  sizeToFit];

  • 大小: 17.1 KB
  • 大小: 13.1 KB
  • 大小: 11.2 KB
分享到:
评论

相关推荐

    UINavigationController详解与使用(二)页面切换和segmentedController

    当与`UINavigationController`结合使用时,`UISegmentedControl`可以成为页面切换的触发器。例如,每个段可以对应一个不同的视图控制器,用户点击不同的段时,我们可以根据选中的段索引来决定推入哪个视图控制器。 ...

    UITabBarController和UINavigationController的整合使用

    UITabBarController和UINavigationController的整合使用DEMO,详情见:http://blog.csdn.net/hwe_xc/article/details/50588500

    UINavigationController使用详解

    在iOS开发中,`UINavigationController` 是一个至关重要的组件,它负责管理一系列的`UIViewController`实例,并通过一个导航栏提供用户界面导航。`UINavigationController` 的主要作用是展示一个堆栈式的视图控制器...

    UINavigationController与UITabBarController的使用例子

    在iOS应用开发中,`UINavigationController` 和 `UITabBarController` 是两个非常重要的视图控制器容器,它们用于构建用户界面的导航和切换功能。在这个使用例子中,我们将深入理解这两个类,并通过源码分析和实际...

    iOS 使用UINavigationController进行页面间跳转

    下面将详细讲解`UINavigationController`的使用以及如何进行页面间跳转。 首先,理解`UINavigationController`的基本概念。它是一个容器视图控制器,可以包含一个或多个子视图控制器。默认情况下,`...

    UITabBarController和UINavigationController混用

    在这个名为 "TabBarAndNavigation" 的示例项目中,开发者可能已经创建了一个实际运行的 Demo,展示了如何在 `UITabBarController` 和 `UINavigationController` 结合使用的场景下,根据需求动态隐藏和显示 `tabBar`...

    UINavigationController 显示隐藏

    在iOS应用开发中,`UINavigationController`是苹果提供的一个核心组件,它负责管理一系列的`UIViewController`对象,形成一个导航栈。这个栈的顶部视图控制器通常显示在屏幕上,而其他视图控制器则被压入栈中等待...

    UINavigationController Demo代码

    本示例代码“UINavigationController Demo”将深入讲解如何在iOS应用中有效地使用`UINavigationController`,以及它与导航栏(`UINavigationBar`)的交互。 首先,`UINavigationController`是`UIViewController`的...

    UINavigationController+UITabBarController框架

    我们写iOS项目的时候,基本都是一个UINavigationController套一个UITabBarController的形式,就是上面一个导航栏,下面几个按钮的工具条的形式。我写了几个应用,发现如果每次都重新写的话完全就是浪费精力和时间,...

    页面跳转 UITabBarController+UINavigationController+UIViewController

    当`UITabBarController`与`UINavigationController`结合使用时,常常会在每个`TabBarItem`下嵌套一个`UINavigationController`,这样每个标签页都可以拥有自己的导航结构。例如,你可以在每个`TabBarItem`下面设置一...

    UINavigationController demo

    在这个"UINavigationController demo"中,我们将探讨如何简单地使用`UINavigationController`以及如何在其上添加自定义导航按钮,包括图片按钮和switch按钮。 首先,要创建一个`UINavigationController`实例,通常...

    UINavigationController

    1. **分段控制器(TabBarController)集成**:`UINavigationController`常与`UITabBarController`结合使用,为每个分段提供独立的导航结构。 2. **交互式Pop手势**:默认情况下,`UINavigationController`支持从左侧...

    UINavigationController返回按钮的事件

    上传的demo关于UINavigationController中back按钮的重写方法, UINavigationController的back按妞本身是没有监听方法的,但是我们通过添加类目可以使back按钮具有监听的作用.让我们能在UINavigationController触发返回...

    IOS7 UINavigationController滑动Demo

    在iOS开发中,UINavigationController是苹果提供的一种容器类视图控制器,它负责管理一个堆栈式的视图控制器序列。在iOS 7之前,用户通常通过导航栏上的返回按钮或者手势来实现页面间的切换。然而,随着iOS 7的发布...

    UInavigationController

    UInavigationController笔记

    swift5.0 UINavigationController基础使用

    本教程将深入讲解`UINavigationController`的基础使用,特别针对Swift 5.0版本。作为新手自学练习,理解并掌握这部分内容对于构建具有层级结构的iOS应用至关重要。 1. **UINavigationController简介** `...

    UINavigationController自定义

    在`animateTransition(using:)`方法中,你可以使用`transitionContext`来获取当前的fromViewController和toViewController,并通过修改其frame或者使用Core Animation来实现动画效果。 三、交互式转场 如果想要...

    uinavigationcontroller用法.rar

    7. **使用uinavigationcontroller的场景**: - 一般在需要多层级导航结构,如主菜单-子菜单的切换,或是需要回退功能的场景下使用。 8. **与storyboard的配合**: - 在storyboard中,可以通过segue的`Kind`设置为...

Global site tag (gtag.js) - Google Analytics