黑马程序员——IOS学习七:UINavigationController控件的初步——黑马 ios 技术博客

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

UINavigationController大致的简介截图至一份朋友给的课件

(这个课件我问问看能不能分享出来,因为是他培训机构的课件,内容不多,但是概括性不错。)



然后我们看下例子要实现的简单看下效果

                   

(不好意思,这个截图手抖了,有点难看。)

好了,现在说下大致步骤

1.首先还是创建一个工程

然后这边我们不用MainWindow.xib方式来实现布局了。

直接代码实现。

我们都知道在应用启动后要创建一个window啊什么的。然后window的根视图等等。这个一般是AppDelegate中完成

[cpp]  view plain copy
  1. //  
  2. //  NonoAppDelegate.m  
  3. //  NavTest  
  4. //  
  5. //  Created by Nono on 12-4-26.  
  6. //  Copyright (c) 2012年 NonoWithLilith. All rights reserved.  
  7. //  
  8.   
  9. #import "NonoAppDelegate.h"  
  10. #import "NonoFirstLevelViewController.h"  
  11. @implementation NonoAppDelegate  
  12.   
  13. @synthesize window = _window;  
  14. @synthesize navController = _navController;  
  15.   
  16. - (void)dealloc  
  17. {  
  18.     [_window release];  
  19.     [_navController release];  
  20.     [super dealloc];  
  21. }  
  22.   
  23. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  
  24. {     
  25.     //应用的第一层是个window  
  26.     self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];  
  27.     // Override point for customization after application launch.  
  28.       
  29.     //放在window上的根视图  
  30.     UINavigationController  *nc = [[UINavigationController alloc] init];  
  31.     self.navController = nc;  
  32.     [nc release];  
  33.     NonoFirstLevelViewController *tableVc = [[NonoFirstLevelViewController alloc] initWithNibName:@"NonoFirstLevelViewController" bundle:nil];  
  34.       
  35.     //将First作为控制器的顶级视图。  
  36.     [self.navController initWithRootViewController:tableVc];  
  37.     [tableVc release];  
  38.     self.window.rootViewController = self.navController;  
  39.     self.window.backgroundColor = [UIColor redColor];  
  40.     [self.window makeKeyAndVisible];   
  41.     return YES;  
  42. }  

视图放置顺序基本就是 window ——NavigationC——FirstLevelVC。

然后我们会看到蓝色的导航条上的标题,以及后面要涉及到的回退,操作按钮。

IOS开发中得操作习惯一开始还是很难适应的。

理论上来说对于蓝色框内(也就是导航条本身的设置),我们应该是获取navc对象本身来进行操作,但是貌似

熟悉了代码后,发现对于导航条上修改和设置是通过当前被展示得视图的视图控制去设置。

下面我们看下FirstLevel,也就是导航控制器中顶级视图实现类的部分代码

[cpp]  view plain copy
  1. - (void)viewDidLoad  
  2. {  
  3.     [super viewDidLoad];  
  4.     self.title = @"第一级视图";  
  5.    // self.navigationItem.title = @"第一级视图";//设置导航控制标题  
  6.       
  7.     //实现一个右边按钮,默认顶级视图是没有左右按钮的  
  8.     UIBarButtonItem *rigthButton = [[UIBarButtonItem alloc]  initWithTitle:@"编辑"  style:UIBarButtonItemStyleBordered  target:self  action:@selector(editButtonPressed:)];  
  9.     self.navigationItem.rightBarButtonItem = rigthButton;  
  10.     [rigthButton release];   
  11.     //实例化一个可变数组  
  12.     NSMutableArray *array = [[NSMutableArray alloc] init ];//  
  13.     self.controllers = array;  
  14.     [array release];  
  15.     [self initAllSecondControllers:self.controllers];  
  16.       
  17.       
  18.     // Uncomment the following line to preserve selection between presentations.  
  19.     // self.clearsSelectionOnViewWillAppear = NO;  
  20.    
  21.     // Uncomment the following line to display an Edit button in the navigation bar for this view controller.  
  22.     // self.navigationItem.rightBarButtonItem = self.editButtonItem;  
  23. }  

1》导航条的标题有两个方法,设置当前视图得title后,导航条会自动把其当做导航条的title,还有是获取当前视图的导航条控制器,设置title。

2》同理得设置左右按钮也是一样。

顶级视图是不能被pop的,一般呈现形式就是这样。


3.点击一个item后进入二级试图去看看。

整点击进入二级视图就是一个push入一个控制器视图

[cpp]  view plain copy
  1. NonoSecondLevelViewController  *secondVC = [self.controllers objectAtIndex:row];  
  2.    // ...  
  3.    // Pass the selected object to the new view controller.  
  4.    [self.navigationController pushViewController:secondVC animated:YES];  


默认的,进入二级视图后,导航条就会自动添加一个回退按钮,如果上级视图没有设置title,

按钮得默认文字是“back”,如果设置了title,文字就是这个title。


运用系统默认的样式实现navc基本就是这样,左右键和标题,也能符合我们简单得需求。

对于导航条的样式得修改

系统提供了4中样式


上图设置了bar的style: 

//放在window上的根视图
    UINavigationController  *nc = [[UINavigationController alloc] init];
    [nc.navigationBar setBarStyle:UIBarStyleBlackOpaque];

一个右边得button;

一个切换或是加载提示框类似于

    self.navigationItem.prompt = @"加载";

在处理完逻辑后,设置成nil就ok了。


对于如何自定义导航条,这个下回等我熟透了代码在整。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值