IOS用UINavigationController实现在两个页之间导航

要求:1、从基于Xcode空项目模板开始

      2、两页之间能相互传递数据

      3、在导航控制栏上添加系统按钮和左右按钮

实现方法分析

1、根据MVC模式,iphone的程序都是有 view-model-controller 组成的。所以,在两个页面就是两个视图控制器和其管理的View。因此:

第一页定义为:cityViewController

第二页定义为:CityDetailViewController

导航控制器在这两个视图控制器之间切换!工程项目名称为:lvyou

2、开发步骤:

第一步:创建一个工程项目。项目名称:lvyou、基于空模板(Windows-based Application

第二步:创建cityViewController视图控制器

>>请选择File > New File。在New File窗口中,请选择Cocoa Touch Classes,然后选择UIViewController-subclass。同时,请勾选Options区域中标题为With XIB for user interface的选择框。为文件起个名字,本例视图控制器名称为cityViewController,(类名称习惯以一个大写字母开头)。请务必创建.m.h文件,并将二者都添加到工程。此时,系统已经生成三个文件(*.h*.m*.xib, 实际实现了四项任务:

1)系统为你创建了一个视图控制器(名叫FilesOwner对象),类名为cityViewController

2)系统也为你创建了一个视图view(*.xib上打开)

3)在视图控制器类上,系统也为你定义了一个输出口IBOulet变量view

4)这个变量(输出口IBOulet变量view)已经关联了视图view

第三步:同样方法创建CityDetailViewController视图控制器。

>>请选择File > New File。在New File窗口中,请选择Cocoa Touch Classes,然后选择UIViewController-subclass。同时,请勾选Options区域中标题为With XIB for user interface的选择框。为文件起个名字,视图控制器名称为CityDetailViewController。此时,系统已经生成三个文件(*.h*.m*.xib,同样也实际实现了上述的四项任务。

第四步:添加(注册)一个导航控制器。

(注册cityViewController是第一个要显示视图控制器)只能用代码方法!(当然,如果你创建工程项目时选择“基于导航的应用”。就会为你自动创建一个名为RootViewController的根视图控制器,并自动生成了一些代码,比如把导航控制器的视图放到窗口的视图内)

方法:在lvyouAppDelegate.h上声明(添加)一个UINavigationController类对象

[plain]  view plain copy
  1. //lvyouAppDelegate.h原代码开始  
  2. #import <UIKit/UIKit.h>  
  3. @interface lvyouAppDelegate : NSObject <UIApplicationDelegate> {  
  4.     UIWindow *window;  
  5.     UINavigationController *navController;//此行新加,对应的实现文件.m上必须要有代码!  
  6.     UITabBarController *tabBarController; // 声明一个标签控制器,下一节讲  
  7. }  
  8. @property (nonatomic, retain) IBOutlet UIWindow *window;  
  9. @end  
  10. //lvyouAppDelegate.h原代码结束  
  11.    
  12. //lvyouAppDelegate.m原代码开始  
  13. #import "lvyouAppDelegate.h"  
  14. #import "cityViewController.h"//此处要加上  
  15. #import "MeiShiTianDi.h"  
  16. @implementation lvyouAppDelegate  
  17. @synthesize window;  
  18. #pragma mark -  
  19. #pragma mark Application lifecycle  
  20.    
  21. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {     
  22.      
  23.     tabBarController = [[UITabBarController alloc] init];//初始化标签栏控制器  
  24.     MeiShiTianDi *viewController =[[MeiShiTianDi alloc] init];//初始化控制器  
  25.     viewController.title=@"美食天地";  
  26.     navController = [[UINavigationController alloc] init];//初始化导航控制器  
  27.     //加入标签栏控制器的控制器数量矩阵  
  28.     tabBarController.viewControllers =  
  29.     [NSArray arrayWithObjects:navController, viewController,nil];  
  30.      
  31.     [viewController release];  
  32.     //定义名称为“所有城市”的返回按钮。该按钮无需target和action  
  33. //因为系统已经实现了返回功能。Style是显示风格  
  34.     UIBarButtonItem *backButton =  
  35.        [[UIBarButtonItem alloc] initWithTitle:@"所有城市"  
  36.            style:UIBarButtonItemStyleBordered  
  37.            target:nil action:nil];  
  38.     //设置启动应用时第一个要显示的视图控制器,这里是cityViewContrl  
  39.     cityViewController *cityViewContrl = [[cityViewController alloc] init];  
  40.     cityViewContrl.title = @"旅游指南";//设置第一个视图控制器的标题  
  41.     //设置返回按钮  
  42.     cityViewContrl.navigationItem.backBarButtonItem= backButton;  
  43.     [backButton release];  
  44.     //把第一个视图控制器推push到堆栈中  
  45.     [navController pushViewController:cityViewContrl animated:NO];  
  46.     //这里假定是导航栏的第一个视图,所以animated:NO不要动画化。  
  47.     [cityViewContrl release];  
  48.     //把导航(标签栏)控制器放到Window下  
  49.     //[window addSubview:navController.view];  
  50.     [window addSubview:tabBarController.view];  
  51.      
  52.     // Override point for customization after application launch.  
  53.     [window makeKeyAndVisible];  
  54.     return YES;  
  55. }  
  56. - (void)applicationWillResignActive:(UIApplication *)application {  
  57.      
  58. }  
  59. - (void)applicationDidEnterBackground:(UIApplication *)application {  
  60.      
  61. }  
  62. - (void)applicationWillEnterForeground:(UIApplication *)application {  
  63.      
  64. }  
  65. - (void)applicationDidBecomeActive:(UIApplication *)application {  
  66.      
  67. }  
  68. - (void)applicationWillTerminate:(UIApplication *)application {  
  69.      
  70. }  
  71. #pragma mark -  
  72. #pragma mark Memory management  
  73. - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {  
  74.      
  75. }  
  76. - (void)dealloc {  
  77.     [tabBarController release];//释放内存  
  78.     [navController release];  
  79.     [window release];  
  80.     [super dealloc];  
  81. }  
  82. @end  
  83. //lvyouAppDelegate.m原代码结束  

第五步:设计完善cityViewController视图控制器。

首先在cityViewController.xib上添加一个按钮,修改按钮标题为“北京”。在cityViewController.h中声明一个方法selectCity。将按钮与方法建立连接!

[plain]  view plain copy
  1. //cityViewController.h原代码开始  
  2. #import <UIKit/UIKit.h>  
  3. @interface cityViewController : UIViewController {  
  4.     }  
  5. - (IBAction) selectCity : (id) sender;//自定义一个方法,点击“北京”按钮,进入下一页  
  6. @end  
  7. //cityViewController.h原代码结束  
  8.    
  9. //cityViewController.m原代码开始  
  10. #import "cityViewController.h"  
  11. #import "CityDetailViewController.h"//新加上的,声明注册CityDetailViewController  
  12.    
  13. @implementation cityViewController  //定义属性  
  14. //实现自定义的方法(函数)  
  15. -(IBAction) selectCity : (id) sender{  
  16.     CityDetailViewController *cityDetailContrl  
  17.             = [[CityDetailViewController alloc] init];//初始化CityDetailViewController  
  18.     cityDetailContrl.title = @ "北京欢迎您";//设置第二个视图控制器标题  
  19.     cityDetailContrl.city = @"北京";//设置要传到下一个控制器的数据——北京  
  20.     //把第二视图控制器推入堆栈中  
  21. [self.navigationController pushViewController:cityDetailContrl animated:YES];  
  22.     [cityDetailContrl release];//释放内存  
  23. }  
  24.    
  25.    
  26. // Implement viewDidLoad to do additional setup after loading the view, typically from a nib.  
  27. - (void)viewDidLoad {  
  28. //创建一个有边框的文体按钮,按下后,调用视图控制器上的discount方法  
  29. UIBarButtonItem *discountButton = [[UIBarButtonItem alloc]  
  30.                     initWithTitle:@"折扣信息" style:UIBarButtonItemStyleBordered  
  31.                                 target:self action:@selector(discount:)];  
  32.     self.navigationItem.leftBarButtonItem = discountButton;//设置为左边按钮  
  33.     [discountButton release];//释放内存  
  34.     //设置视图控制器在标签栏上的标题和图像  
  35.     // 文字是:旅游指南。图像是:GoldenGateBridge.png  
  36.     UITabBarItem *item = [[UITabBarItem alloc]  
  37.                           initWithTitle:@"旅游指南"  
  38.                           //initWithTabBarSystemItem:UITabBarSystemItemBookmarks  
  39.                           image:[UIImage imageNamed:@"GoldenGateBridge.png"]  
  40.                           tag:0];  
  41.     self.tabBarItem = item;  
  42.     [item release];  
  43.      
  44.     [super viewDidLoad];  
  45. }  
  46.    
  47.    
  48. - (void)didReceiveMemoryWarning {  
  49.     // Releases the view if it doesn't have a superview.  
  50.     [super didReceiveMemoryWarning];  
  51.      
  52.     // Release any cached data, images, etc that aren't in use.  
  53. }  
  54.    
  55. - (void)viewDidUnload {  
  56.     [super viewDidUnload];  
  57.     // Release any retained subviews of the main view.  
  58.     // e.g. self.myOutlet = nil;  
  59. }  
  60. - (void)dealloc {  
  61.     [super dealloc];  
  62. }  
  63. @end  
  64. //cityViewController.m原代码结束  

第六步:设计完善CityDetailViewController视图控制器。

首先在CityDetailViewController.xib上添加两个标签Label,其中第一个标签Label修改文字为“北京的介绍信息”(实际应用中城市的介绍信息应该从模型类中读取),第二个标签Label修改文字“城市名称”,因为从前一个页面传递一个数据(城市名称)过来,在第二个页面上要读取,并显示出来。在CityDetailViewController.h中声明一个IBOutlet(命名为cityName),用于关联View上刚刚创建的“城市名称”Label,另外,创建一个属性“city”用于接收从前一个页面传递过来的数据(城市名称)。


[plain]  view plain copy
  1. //CityDetailViewController.h原代码开始  
  2. #import <UIKit/UIKit.h>  
  3. @interface CityDetailViewController : UIViewController {  
  4.     IBOutlet UILabel *cityName;// 第二个标签Label创建接口IBOutlet  
  5.     NSString *city;            //创建一个属性  
  6. }  
  7. @property (copy) NSString *city; //创建一个属性set/get方法  
  8. @end  
  9. //CityDetailViewController.h原代码结束  
  10.    
  11. //CityDetailViewController.m原代码开始  
  12. #import "CityDetailViewController.h"  
  13. @implementation CityDetailViewController //实现控制器类  
  14. @synthesize city; //属性city变量  
  15.    
  16. // Implement viewDidLoad to do additional setup after loading the view, typically from a nib.  
  17. - (void)viewDidLoad {  
  18.     cityName.text = city;//获取从前一个页面传来的数据  
  19.     //创建一个系统添加按钮,按下后,调用视图控制器上的add方法  
  20.     UIBarButtonItem *rightButton = [[UIBarButtonItem alloc]  
  21.        initWithBarButtonSystemItem:UIBarButtonSystemItemAdd  
  22.        target:self action:@selector(add:)];// 调用视图控制器上的add方法  
  23.     //设置为导航控制器控制条上的右边按钮  
  24. self.navigationItem.rightBarButtonItem = rightButton;  
  25.     [rightButton release];  
  26.      
  27.     [super viewDidLoad];  
  28. }  
  29.    
  30. - (void)didReceiveMemoryWarning {  
  31.     // Releases the view if it doesn't have a superview.  
  32.     [super didReceiveMemoryWarning];  
  33.     // Release any cached data, images, etc that aren't in use.  
  34. }  
  35. - (void)viewDidUnload {  
  36.     [super viewDidUnload];  
  37.     // Release any retained subviews of the main view.  
  38.     // e.g. self.myOutlet = nil;  
  39. }  
  40. - (void)dealloc {  
  41.     [super dealloc];  
  42. }  
  43. @end  
  44. //CityDetailViewController.m原代码结束  
  45. 第七步:UINavigationItemUIBarButtonItem

    通常每个(指任何)视图控制器都可以定义一个UINavigationItemUINavigationItem类就是实现这些功能的,这个类包含了如下表:

    左边按钮

    标题视图

    右边按钮

    leftBarButtonItem

    titleView

    rightBarButtonItem

    当它所属的视图控制器在导航控制器所控制的堆栈顶部时,即调用(也就是说该视图控制器即将要显示时),系统自动显示该视图控制器的UINavigationItem,开发人员无需编写任何代码来调用UINavigationItem,但之前必须要设置好。上面程序代码中已经有定制好的导航栏左右按钮,简述说明如下:

    定制返回按钮:在缺省情况下,下一页上的返回按钮上的文字是上一页的标题,可以在程序中修改为其它文字,要记住!返回按钮是放在上一页的视图控制器上的,所以必须在上一页对应的视图控制器的实现文件(*.m)中去修改。如在上面lvyouAppDelegate.m中有如下代码:(图中绿色代码部分)

    [plain]  view plain copy
    1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {     
    2.    ……  
    3.     navController = [[UINavigationController alloc] init];//初始化导航控制器  
    4.     //定义名称为“所有城市”的返回按钮。该按钮无需target和action  
    5. //因为系统已经实现了返回功能。Style是显示风格  
    6.     UIBarButtonItem *backButton =  
    7.        [[UIBarButtonItem alloc] initWithTitle:@"所有城市"  
    8.            style:UIBarButtonItemStyleBordered  
    9.            target:nil action:nil];  
    10.     //设置启动应用时第一个要显示的视图控制器,这里是cityViewContrl  
    11.     cityViewController *cityViewContrl = [[cityViewController alloc] init];  
    12.     cityViewContrl.title = @"旅游指南";//设置第一个视图控制器的标题  
    13.     //设置返回按钮  
    14.     cityViewContrl.navigationItem.backBarButtonItem= backButton;  
    15.     [backButton release];  
    16.     //把第一个视图控制器推push到堆栈中  
    17.     [navController pushViewController:cityViewContrl animated:NO];  
    18.     [cityViewContrl release];  
    19.     //把导航(标签栏)控制器放到Window下  
    20.     //[window addSubview:navController.view];  
    21.     [window addSubview:tabBarController.view];  
    22.      
    23.     // Override point for customization after application launch.  
    24.     [window makeKeyAndVisible];  
    25.     return YES;  
    26. }  

    在导航控制栏上添加系统按钮和左右按钮。

    首先在第一页的导航栏上添加一个“折扣信息”按钮,如在上面所述,要记住!返回按钮是放在上一页的视图控制器上的,所以必须在上一页对应的视图控制器的实现文件(*.m)中去修改。这里要求在第一页的导航栏上添加一个“折扣信息”按钮(显然,这不是返回上一页按钮,而是在导航控制栏上添加一个“左按钮”),故可在当前视图控制器的实现文件(*.m)中去修改,即cityViewController.m中去修改,在它原代码中有如下代码:(图中绿色代码部分)


    [plain]  view plain copy
    1. - (void)viewDidLoad {  
    2. //创建一个有边框的文体按钮,按下后,调用视图控制器上的discount方法  
    3. UIBarButtonItem *discountButton = [[UIBarButtonItem alloc]  
    4.                   initWithTitle:@"折扣信息" style:UIBarButtonItemStyleBordered  
    5.                             target:self action:@selector(discount:)];  
    6.     self.navigationItem.leftBarButtonItem = discountButton;//设置为左边按钮  
    7.     [discountButton release];//释放内存  
    8.      
    9.     UITabBarItem *item = [[UITabBarItem alloc]  
    10.                           initWithTitle:@"旅游指南"  
    11.                           //initWithTabBarSystemItem:UITabBarSystemItemBookmarks  
    12.                           image:[UIImage imageNamed:@"GoldenGateBridge.png"]  
    13.                           tag:0];  
    14.     self.tabBarItem = item;  
    15.     [item release];  
    16.      
    17.     [super viewDidLoad];  
    18. }  

    其次在第二页的导航栏上添加一个“系统按钮”(右边按钮),根据上面分析,这同样以至于返回按钮,故可在当前视图控制器的实现文件(*.m)中去修改,即CityDetailViewController.m中去修改,在它原代码中有如下代码:(图中绿色代码部分)

    [plain]  view plain copy
    1. - (void)viewDidLoad {  
    2.     cityName.text = city;//获取从前一个页面传来的数据  
    3.     //创建一个系统添加按钮,按下后,调用视图控制器上的add方法  
    4.     UIBarButtonItem *rightButton = [[UIBarButtonItem alloc]  
    5.        initWithBarButtonSystemItem:UIBarButtonSystemItemAdd  
    6.        target:self action:@selector(add:)];// 调用视图控制器上的add方法  
    7.     //设置为导航控制器控制条上的右边按钮  
    8. self.navigationItem.rightBarButtonItem = rightButton;  
    9.     [rightButton release];  
    10.      
    11.     [super viewDidLoad];  
    12. }  

    第八步:标签栏控制器(UITabBarController

    标签栏控制器是用数组来管理所控制的视图控制器。这些被管理的视图控制器即可以是导航控制器,也可以是一般的视图控制器。另外,这些视图控制器之间是平等关系,而不像导航控制器所管理的视图控制器之间是所谓的“上下级关系”。缺省情况下,标签栏上显示的是各个视图的标题,如下图显示了五个标签。

    iPhone OS的标签栏最多可显示五个标签

    iPhone开发学习笔记016鈥斺斢肬INavigationController实现在两个页之间导航(下)

    当你选择某一个视图控制器时,该视图控制器就执行。当你选择另一个视图控制器时,当前视图控制器的状态被保留。非常类似微软中的多窗口的概念。

    关系:               平等关系             上、下级之间关系

    标签栏控制器

    UITabBarController

    导航控制器

    (旅游信息)

    一般视图控制器

    cityViewController

    一般视图控制器

    CityDetailViewController

    一般视图控制器

    (美食天地)

    MeiShiTianDi

     

    下面我们将创建一个标签栏控制器,如上表,它有两个标签“旅游信息”和“美食天地”。“旅游信息”由于前面已经完成,它管理着两个视图控制器(cityViewController、 CityDetailViewController),因此,下面重点讲解未完成的工件。

    1、项目的委托AppDelegate声明注册一个标签控制器、初始化后放到主窗口Window

    首先:因为项目名称仍然是lvyou,所以要在项目.h中(lvyouAppDelegate.h)声明一个标签控制器:

    [plain]  view plain copy
    1. //lvyouAppDelegate.h原代码开始  
    2. #import <UIKit/UIKit.h>  
    3. @interface lvyouAppDelegate : NSObject <UIApplicationDelegate> {  
    4.     UIWindow *window;  
    5.     UINavigationController *navController;//此行新加,对应的实现文件.m上必须要有代码!  
    6.     UITabBarController *tabBarController;// 声明一个标签控制器  
    7. }  
    8. @property (nonatomic, retain) IBOutlet UIWindow *window;  
    9. @end  
    10. //lvyouAppDelegate.h原代码结束  
    11. 其次:要在项目.m中(lvyouAppDelegate.m)初始化,并将所要管理的控制器(本例是两个:一个导航控制器、另一个是美食天地视图控制器)放到其viewControllers数组中  
    12. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {     
    13.      
    14.     tabBarController = [[UITabBarController alloc] init];//初始化标签栏控制器  
    15.     MeiShiTianDi *viewController =[[MeiShiTianDi alloc] init];//初始化控制器  
    16.     viewController.title=@"美食天地";  
    17.     navController = [[UINavigationController alloc] init];//初始化导航控制器  
    18.     //加入标签栏控制器的控制器数量矩阵  
    19. //本例为两个控制器navController viewController  
    20.     tabBarController.viewControllers =  
    21.     [NSArray arrayWithObjects:navController, viewController,nil];  
    22.     [viewController release];//因它不是第一个视图控制器,故释放内存  
    23.     //定义名称为“所有城市”的返回按钮。该按钮无需target和action  
    24. //因为系统已经实现了返回功能。Style是显示风格  
    25.     UIBarButtonItem *backButton =  
    26.         [[UIBarButtonItem alloc] initWithTitle:@"所有城市"  
    27.             style:UIBarButtonItemStyleBordered  
    28.             target:nil action:nil];  
    29.     //设置启动应用时第一个要显示的视图控制器,这里是cityViewContrl  
    30.     cityViewController *cityViewContrl = [[cityViewController alloc] init];  
    31.     cityViewContrl.title = @"旅游指南";//设置第一个视图控制器的标题  
    32.     //设置返回按钮  
    33.     cityViewContrl.navigationItem.backBarButtonItem= backButton;  
    34.     [backButton release];  
    35.     //把第一个视图控制器推push到堆栈中  
    36.     [navController pushViewController:cityViewContrl animated:NO];  
    37.     //这里假定是导航栏的第一个视图,所以animated:NO不要动画化。  
    38.     [cityViewContrl release];  
    39.     //把导航(标签栏)控制器放到Window下  
    40.     //[window addSubview:navController.view];  
    41.     [window addSubview:tabBarController.view]; //把标签栏控制器放到Window下  
    42.      
    43.     // Override point for customization after application launch.  
    44.     [window makeKeyAndVisible];  
    45.     return YES;  
    46. }  

    2、创建另一个(第三个)视图控制器——美食天地:MeiShiTianDi

    方法同前:

    >>请选择File > New File。在New File窗口中,请选择Cocoa Touch Classes,然后选择UIViewController-subclass。同时,请勾选Options区域中标题为With XIB for user interface的选择框。为文件起个名字,视图控制器名称为MeiShiTianDi。此时,系统已经生成三个文件(*.h*.m*.xib,在新的视图控制器的视图上(MeiShiTianDi.xib)添加一些按钮(加四个,命名为“广东菜、浙江菜、四川菜、东北菜”)。

    1)、添加标签栏控制器的属性到lvyouAppDelegate.h中——(上一步已经完成!)

    2)、lvyouAppDelegate.m文件中的- (BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法中,用代码方式创建一个标签栏控制器,并初始化它,最后将两个控制器navController(旅游信息)、viewController(美食天地)放在标签控制器上。——(上一步已经完成!)

    [plain]  view plain copy
    1. //MeiShiTianDi.h原代码开始  
    2. #import <UIKit/UIKit.h>  
    3. @interface MeiShiTianDi : UIViewController {  
    4. }  
    5. @end  
    6. //MeiShiTianDi.m原代码结束  
    7.    
    8. //MeiShiTianDi.h原代码开始  
    9. #import "MeiShiTianDi.h"  
    10. @implementation MeiShiTianDi  
    11.    
    12. // Implement viewDidLoad to do additional setup after loading the view, typically from a nib.  
    13. - (void)viewDidLoad {  
    14.     //UIImage *tabImage = [UIImage imageNamed:@"shrimp.jpg"];  
    15.     //设置视图控制器在标签栏上的标题和图像  
    16.     // 文字是:美食天地。图像是:UITabBarSystemItemBookmarks  
    17. UITabBarItem *item = [[UITabBarItem alloc]  
    18.                            initWithTitle:@"美食天地"  
    19.                            initWithTabBarSystemItem:UITabBarSystemItemBookmarks  
    20.                           //image:tabImage  
    21.                            tag:0];  
    22. //本例还注释掉了使用自己的图像shrimp.jpg的两行代码。如你交换一下也能运行  
    23. self.tabBarItem = item;  
    24.     [item release];   
    25.     [super viewDidLoad];  
    26. }  
    27. - (void)didReceiveMemoryWarning {  
    28.     // Releases the view if it doesn't have a superview.  
    29.     [super didReceiveMemoryWarning];  
    30.      
    31.     // Release any cached data, images, etc that aren't in use.  
    32. }  
    33.    
    34. - (void)viewDidUnload {  
    35.     [super viewDidUnload];  
    36.     // Release any retained subviews of the main view.  
    37.     // e.g. self.myOutlet = nil;  
    38. }  
    39. - (void)dealloc {  
    40.     [super dealloc];  
    41. }  
    42. @end  
    43. //MeiShiTianDi.m原代码结束  

    3)、设置视图控制器在标签栏上的标题和图像(UITabBarItem

    每个视图控制器类都有一个UITabBarItem。通过这个类,可以设置视图控制器在标签栏上的标题和图像。标题和图像分为两个类,一类是自己的图像和文字(格式为.png);另一类是系统提供的图像和文字。

    首先添加图像到项目中,(在资源文件夹下)

    添加UITabBarItem代码到cityViewController.mviewDidLoad方法下,这里使用用户自己的图像,图像名是:GoldenGateBridge.png

    [plain]  view plain copy
    1. - (void)viewDidLoad {  
    2. //创建一个有边框的文体按钮,按下后,调用视图控制器上的discount方法  
    3. UIBarButtonItem *discountButton = [[UIBarButtonItem alloc]  
    4.                     initWithTitle:@"折扣信息" style:UIBarButtonItemStyleBordered  
    5.                                 target:self action:@selector(discount:)];  
    6.     self.navigationItem.leftBarButtonItem = discountButton;//设置为左边按钮  
    7.     [discountButton release];//释放内存  
    8.     //设置视图控制器在标签栏上的标题和图像  
    9.     // 文字是:旅游指南。图像是:GoldenGateBridge.png  
    10.     UITabBarItem *item = [[UITabBarItem alloc]  
    11.                        initWithTitle:@"旅游指南"  
    12.                        //initWithTabBarSystemItem:UITabBarSystemItemBookmarks  
    13.                        image:[UIImage imageNamed:@"GoldenGateBridge.png"]  
    14.                        tag:0];  
    15.     self.tabBarItem = item;  
    16.     [item release];  
    17.      
    18.     [super viewDidLoad];  
    19. }  

    添加UITabBarItem代码到MeiShiTianDi.mviewDidLoad方法下,这里使用系统提供的图像,图像名是:UITabBarSystemItemBookmarks,当然,本例还注释掉了使用用户自己的图像的两行代码。如果你交换一下,也能运行。

    [plain]  view plain copy
    1. - (void)viewDidLoad {  
    2.     //UIImage *tabImage = [UIImage imageNamed:@"shrimp.jpg"];  
    3.     //设置视图控制器在标签栏上的标题和图像  
    4.     // 文字是:美食天地。图像是:UITabBarSystemItemBookmarks  
    5. UITabBarItem *item = [[UITabBarItem alloc]  
    6.                            initWithTitle:@"美食天地"  
    7.                            initWithTabBarSystemItem:UITabBarSystemItemBookmarks  
    8.                           //image:tabImage  
    9.                            tag:0];  
    10. //本例还注释掉了使用用户自己的图像shrimp.jpg的两行代码。如你交换一下也能运行  
    11. self.tabBarItem = item;  
    12.     [item release];   
    13.     [super viewDidLoad];  
    14. }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值