Iphone用UINavigationController实现在两个页之间导航(上)
要求:1、从基于Xcode空项目模板开始
实现方法分析
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
第四步:添加(注册)一个导航控制器。
(注册cityViewController是第一个要显示视图控制器)只能用代码方法!(当然,如果你创建工程项目时选择“基于导航的应用”。就会为你自动创建一个名为RootViewController的根视图控制器,并自动生成了一些代码,比如把导航控制器的视图放到窗口的视图内)
方法:在lvyouAppDelegate.h上声明(添加)一个UINavigationController类对象
第五步:设计完善cityViewController视图控制器。首先在cityViewController.xib上添加一个按钮,修改按钮标题为“北京”。在cityViewController.h中声明一个方法selectCity。将按钮与方法建立连接!
第六步:设计完善CityDetailViewController视图控制器。 首先在CityDetailViewController
.xib上添加两个标签Label,其中第一个标签Label修改文字为“北京的介绍信息”(实际应用中城市的介绍信息应该从模型类中读取),第二个标签Label修改文字“城市名称”,因为从前一个页面传递一个数据(城市名称)过来,在第二个页面上要读取,并显示出来。在CityDetailViewController .h中声明一个IBOutlet(命名为cityName),用于关联View上刚刚创建的“城市名称”Label,另外,创建一个属性“city”用于接收从前一个页面传递过来的数据(城市名称)。 //CityDetailViewController.h原代码开始#import <UIKit/UIKit.h>@interface CityDetailViewController : UIViewController { IBOutlet UILabel *cityName;// 第二个标签Label创建接口IBOutlet NSString *city; //创建一个属性}@property (copy) NSString *city; //创建一个属性set/get方法@end//CityDetailViewController.h原代码结束 //CityDetailViewController.m原代码开始#import "CityDetailViewController.h"@implementation CityDetailViewController //实现控制器类@synthesize city; //属性city变量 // Implement viewDidLoad to do additional setup after loading the view, typically from a nib.- (void)viewDidLoad { cityName.text = city;//获取从前一个页面传来的数据 //创建一个系统添加按钮,按下后,调用视图控制器上的add方法 UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(add:)];// 调用视图控制器上的add方法 //设置为导航控制器控制条上的右边按钮self.navigationItem.rightBarButtonItem = rightButton; [rightButton release]; [super viewDidLoad];} - (void)didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; // Release any cached data, images, etc that aren't in use.}- (void)viewDidUnload { [super viewDidUnload]; // Release any retained subviews of the main view. // e.g. self.myOutlet = nil;}- (void)dealloc { [super dealloc];}@end//CityDetailViewController.m原代码结束