首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Iphone >

Iphone用UINavigationController实现在两个页之间导航(下)

2012-11-16 
Iphone用UINavigationController实现在两个页之间导航(上)要求:1、从基于Xcode空项目模板开始2、两页之间能

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类对象

第五步:设计完善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原代码结束

热点排行