当前位置:编程学习 > wap >>

Iphone用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)系统为你创建了一个视图控制器(名叫File’sOwner对象),类名为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] 
//lvyouAppDelegate.h原代码开始 
#import <UIKit/UIKit.h> 
@interface lvyouAppDelegate : NSObject <UIApplicationDelegate> { 
    UIWindow *window; 
    UINavigationController *navController;//此行新加,对应的实现文件.m上必须要有代码! 
    UITabBarController *tabBarController; // 声明一个标签控制器,下一节讲 

@property (nonatomic, retain) IBOutlet UIWindow *window; 
@end 
//lvyouAppDelegate.h原代码结束 
  
//lvyouAppDelegate.m原代码开始 
#import "lvyouAppDelegate.h" 
#import "cityViewController.h"//此处要加上 
#import "MeiShiTianDi.h" 
@implementation lvyouAppDelegate 
@synthesize window; 
#pragma mark - 
#pragma mark Application lifecycle 
  
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    
    tabBarController = [[UITabBarController alloc] init];//初始化标签栏控制器 
    MeiShiTianDi *viewController =[[MeiShiTianDi alloc] init];//初始化控制器 
    viewController.title=@"美食天地"; 
    navController = [[UINavigationController alloc] init];//初始化导航控制器 
    //加入标签栏控制器的控制器数量矩阵 
    tabBarController.viewControllers = 
    [NSArray arrayWithObjects:navController, viewController,nil]; 
    
    [viewController release]; 
    //定义名称为“所有城市”的返回按钮。该按钮无需target和action 
//因为系统已经实现了返回功能。Style是显示风格 
    UIBarButtonItem *backButton = 
       [[UIBarButtonItem alloc] initWithTitle:@"所有城市" 
           style:UIBarButtonItemStyleBordered 
           target:nil action:nil]; 
    //设置启动应用时第一个要显示的视图控制器,这里是cityViewContrl 
    cityViewController *cityViewContrl = [[cityViewController alloc] init]; 
    cityViewContrl.title = @"旅游指南";//设置第一个视图控制器的标题 
    //设置返回按钮 
    cityViewContrl.navigationItem.backBarButtonItem= backButton; 
    [backButton release]; 
    //把第一个视图控制器推push到堆栈中 
    [navController pushViewController:cityViewContrl animated:NO]; 
    //这里假定是导航栏的第一个视图,所以animated:NO不要动画化。 
    [cityViewContrl release]; 
    //把导航(标签栏)控制器放到Window下 
    //[window addSubview:navController.view]; 
    [window addSubview:tabBarController.view]; 
    
    // Override point for customization after application launch. 
    [window makeKeyAndVisible]; 
    return YES; 

- (void)applicationWillResignActive:(UIApplication *)application { 
    

- (void)applicationDidEnterBackground:(UIApplication *)application { 
    

- (void)applicationWillEnterForeground:(UIApplication *)application { 
    

- (void)applicationDidBecomeActive:(UIApplication *)application { 
    

- (void)applicationWillTerminate:(UIApplication *)application { 
    

#pragma mark - 
#pragma mark Memory management 
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { 
    

- (void)dealloc { 
    [tabBarController release];//释放内存 
    [navController release]; 
    [window release]; 
    [super dealloc]; 

@end 
//lvyouAppDelegate.m原代码结束 

第五步:设计完善cityViewController视图控制器。
首先在cityViewController.xib上添加一个按钮,修改按钮标题为“北京”。在cityViewController.h中声明一个方法selectCity。将按钮与方法建立连接!
[plain] 
//cityViewController.h原代码开始 
#import <UIKit/UIKit.h> 
@interface cityViewController : UIViewController { 
    } 
- (IBAction) selectCity : (id) sender;//自定义一个方法,点击“北京”按钮,进入下一页 
@end 
//cityViewController.h原代码结束 
  
//cityViewController.m原代码开始 
#import "cityViewController.h" 
#import "CityDetailViewController.h"//新加上的,声明注册CityDetailViewController 
  
@implementation cityViewController  //定义属性 
//实现自定义的方法(函数) 
-(IBAction) selectCity : (id) sender{ 
    CityDetailViewController *cityDetailContrl 
            = [[City

补充:移动开发 , IOS ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,