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

移动开发 iOS
本文详细介绍了iOS学习之中的UINavigationController详解与使用,以及添加UIBarButtonItem的方法,希望对大家的iOS开发学习有所帮助。

UINavigationController可以翻译为导航控制器,在iOS里经常用到。

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

我们看看它的如何使用:

下 面的图显示了导航控制器的流程。最左侧是根视图,当用户点击其中的General项时 ,General视图会滑入屏幕;当用户继续点击Auto-Lock项时,Auto-Lock视图将滑入屏幕。相应地,在对象管理上,导航控制器使用了导 航堆栈。根视图控制器在堆栈最底层,接下来入栈的是General视图控制器和Auto-Lock视图控制器。可以调用 pushViewControllerAnimated:方法将视图控制器推入栈顶,也可以调用popViewControllerAnimated:方 法将视图控制器弹出堆栈。

上图来自苹果官网。

2、UINavigationController的结构组成

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

现在我们建立一个例子,看看如何使用UINavigationController

3、新建一个项目

命名为UINavigationControllerDemo,为了更好理解UINavigationController,我们选择Empty Application模板

4、创建一个View Controller,命名为RootViewController:依次选择File——New——New File,默认勾上With XIB for user interface.

选择正确位置创建完成,这时项目里多了三个文件,分别是RootViewController.h RootViewController.m RootViewController.xib文件。

打开RootViewController.xib,添加一个按钮控件,按钮Button改成 :Goto SecondView,为跳转做准备

5、打开AppDelegate.h,向其中添加属性:

  1. @property (strong, nonatomic) UINavigationController *navController;   

添加后AppDelegate.h文件代码如下:

  1. #import <UIKit/UIKit.h>   
  2. @class ViewController;   
  3. @interface AppDelegate : UIResponder <UIApplicationDelegate>   
  4. @property (strong, nonatomic) UIWindow *window;   
  5. @property (strong, nonatomic) ViewController *viewController;   
  6. @property (strong, nonatomic) UINavigationController *navController;   
  7. @end   

6、在AppDelegate.m 文件的didFinishLaunchingWithOptions方法中创建添加navController,RootViewController视图。

  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions   
  2. {   
  3.     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];   
  4.     RootViewController *rootView = [[RootViewController alloc] init];   
  5.     rootView.title = @"Root View";   
  6.     self.navController = [[UINavigationController alloc] init];   
  7.     [self.navController pushViewController:rootView animated:YES];   
  8.     [self.window addSubview:self.navController.view];   
  9.     [self.window makeKeyAndVisible];   
  10.     return YES;   
  11. }   

给rootView的titie命名为 Root View,好识别View直接的切换关系。用pushViewController把rootView加入到navController的视图栈中。

7、现在Root视图添加完成

看看效果:

现在还没有Navigation bar 。只有title。

8、添加UIBarButtonItem

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

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

  1. - (void)viewDidLoad   
  2. {   
  3.     [super viewDidLoad];   
  4.     UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(selectLeftAction:)];   
  5.     self.navigationItem.leftBarButtonItem = leftButton;   
  6.     UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd  target:self action:@selector(selectRightAction:)];   
  7.     self.navigationItem.rightBarButtonItem = rightButton;<p class="p1">}</p>   

这样添加了UIBarButtonItem了,效果如下:

这里重点介绍下

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

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

9、响应UIBarButtonItem的事件的实现

我们在 action:@selector(selectLeftAction:);

action添加了selectLeftAction和selectRightAction

在RootViewController.m文件中添加代码实现:

  1. -(void)selectLeftAction:(id)sender   
  2. {   
  3.     UIAlertView *alter = [[UIAlertView alloc] initWithTitle:@"提示" message:@"你点击了导航栏左按钮" delegate:self  cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];   
  4.     [alter show];   
  5. }   
  6. -(void)selectRightAction:(id)sender   
  7. {   
  8.     UIAlertView *alter = [[UIAlertView alloc] initWithTitle:@"提示" message:@"你点击了导航栏右按钮" delegate:self  cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];   
  9.     [alter show];   

这样在点击左右的UIBarButtonItem时,弹出提示:

这篇先讲添加UIBarButtonItem,下篇讲解页面跳转和添加UISegmentedControl

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

下篇:iOS学习UINavigationController详解与使用(三)ToolBar

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

著作权声明:本文由http://blog.csdn.net/totogo2010/原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢
责任编辑:闫佳明 来源: csdn
相关推荐

2013-04-02 10:36:43

iOS学习UINavigatioToolBar

2013-04-02 10:16:34

iOS学习UINavigatio页面切换

2011-08-02 11:07:42

iOS开发 UIWebView

2015-07-09 13:47:37

IOSFMDB

2011-07-26 17:31:52

iOS 设计模式

2011-08-16 14:59:31

IOS开发ViewDidUnloiOS 5

2011-08-02 11:17:13

iOS开发 View

2019-02-12 15:04:09

2010-08-12 13:21:31

华为3COMIOS

2011-08-03 17:32:17

IOS UIScrollVi touch

2011-08-16 16:10:12

MySQLORDER BY子句GROUP BY子句

2011-08-23 13:56:12

MySQLConnection

2019-01-04 15:14:18

2011-08-16 15:35:50

MySQLSELECT语句FROM子句

2022-04-27 08:17:07

OCMock单元测试集成

2013-01-30 15:36:03

NFC移动支付蓝牙

2018-08-08 16:08:45

深度学习机器学习NLP

2021-08-25 07:43:17

AndroidSurfaceViewTextureView

2010-07-06 10:56:32

UML图详解

2012-01-18 13:46:37

ARCiOS
点赞
收藏

51CTO技术栈公众号