您的位置:首页 > 移动开发 > IOS开发

iOS开发:navigationcontrol…

2015-09-23 21:26 471 查看
5、现在为止,我们还看不到什么效果,那是因为controllerList这个数组现在是空的。

接下来我们创建一个Table ViewController,用于显示电影列表。建立的方法同建立RootViewController一样,名称为:MovieViewController。

之后再创建一个ViewController,名称为MovieDetailViewController,用于显示电影的详细信息,这次我们要选中includexib file…选项,并且Subof选项为UIViewController:



6、打开MovieDetailViewController.xib,拖一个Label到中间,并拉长。将其映射到MovieDetailViewController.h中,名称为detailLabel:



然后在MovieDetailViewController.h中添加属性:

C代码

@property (copy, nonatomic) NSString *message;

C代码

@property (copy, nonatomic) NSString *message;

打开MovieDetailViewController.m,在@implementation之后添加代码:

C代码

@synthesize message;

C代码

@synthesize message;

在viewDidLoad方法后面添加一个方法:

C代码

- (void)viewWillAppear:(BOOL)animated {

detailLabel.text = message;

[super viewWillAppear:animated];

}

C代码

- (void)viewWillAppear:(BOOL)animated {

detailLabel.text = message;

[super viewWillAppear:animated];

}

viewWillAppear这个方法每次视图加载都会执行,而viewDidLoad方法只有在第一次加载时才会执行。

在viewDidUnload方法中添加代码:

C代码

self.detailLabel = nil;

self.message = nil;

C代码

self.detailLabel = nil;

self.message = nil;

7、打开MovieViewController.h,向其中添加属性:

C代码

@property (strong, nonatomic) NSArray *movieList;

C代码

@property (strong, nonatomic) NSArray *movieList;

打开MovieViewController.m,在@implementation之前添加代码:

C代码

#import "MovieDetailViewController.h"

#import "AppDelegate.h"

@interface MovieViewController ()

@property (strong, nonatomic) MovieDetailViewController *childController;

@end

C代码

#import "MovieDetailViewController.h"

#import "AppDelegate.h"

@interface MovieViewController ()

@property (strong, nonatomic) MovieDetailViewController *childController;

@end

在@implementation之后添加代码:

C代码

@synthesize movieList;

@synthesize childController;

C代码

@synthesize movieList;

@synthesize childController;

在viewDidLoad方法中添加代码:

C代码

NSArray *array = [[NSArray alloc] initWithObjects:@"肖申克的救赎", @"教父", @"教父:II",

@"低俗小说", @"黄金三镖客", @"十二怒汉", @"辛德勒名单",

@"蝙蝠侠前传2:黑暗骑士", @"指环王:王者归来", @"飞越疯人院",

@"星球大战Ⅴ:帝国反击战", @"搏击俱乐部", @"盗梦空间", @"七武士",

@"指环王:护戒使者", @"好家伙", @"星球大战IV:新希望", @"上帝之城",

@"卡萨布兰卡", @"黑客帝国", @"西部往事", @"后窗", @"夺宝奇兵",

@"沉默的羔羊", @"非常嫌疑犯", @"七宗罪", @"指环王:双塔奇兵", @"阿甘正传",

@"惊魂记", @"美好人生", nil];

self.movieList = array;

C代码

NSArray *array = [[NSArray alloc] initWithObjects:@"肖申克的救赎", @"教父", @"教父:II",

@"低俗小说", @"黄金三镖客", @"十二怒汉", @"辛德勒名单",

@"蝙蝠侠前传2:黑暗骑士", @"指环王:王者归来", @"飞越疯人院",

@"星球大战Ⅴ:帝国反击战", @"搏击俱乐部", @"盗梦空间", @"七武士",

@"指环王:护戒使者", @"好家伙", @"星球大战IV:新希望", @"上帝之城",

@"卡萨布兰卡", @"黑客帝国", @"西部往事", @"后窗", @"夺宝奇兵",

@"沉默的羔羊", @"非常嫌疑犯", @"七宗罪", @"指环王:双塔奇兵", @"阿甘正传",

@"惊魂记", @"美好人生", nil];

self.movieList = array;

在ViewDidUnload方法中添加代码:

C代码

self.movieList = nil;

self.childController = nil;

C代码

self.movieList = nil;

self.childController = nil;

找到numberOfSectionsInTableView方法,修改其返回值为1。

找到numberOfRowsInSection:方法,修改代码为:

C代码

return [movieList count];

C代码

return [movieList count];

找到cellForRowAtIndexPath方法,修改其中代码如下:

C代码

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

static NSString *MovieTableViewCell = @"MovieTableViewCell";

UITableViewCell *cell = [tableView

dequeueReusableCellWithIdentifier: MovieTableViewCell];

if (cell == nil) {

cell = [[UITableViewCell alloc]

initWithStyle:UITableViewCellStyleDefault

reuseIdentifier: MovieTableViewCell];

}

NSUInteger row = [indexPath row];

NSString *movieTitle = [movieList objectAtIndex:row];

//这里设置每一行显示的文本为所对应的View Controller的标题

cell.textLabel.text = movieTitle;

//accessoryType就表示每行右边的图标

cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;

return cell;

}

C代码

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

static NSString *MovieTableViewCell = @"MovieTableViewCell";

UITableViewCell *cell = [tableView

dequeueReusableCellWithIdentifier: MovieTableViewCell];

if (cell == nil) {

cell = [[UITableViewCell alloc]

initWithStyle:UITableViewCellStyleDefault

reuseIdentifier: MovieTableViewCell];

}

NSUInteger row = [indexPath row];

NSString *movieTitle = [movieList objectAtIndex:row];

//这里设置每一行显示的文本为所对应的View Controller的标题

cell.textLabel.text = movieTitle;

//accessoryType就表示每行右边的图标

cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;

return cell;

}

修改didSelectRowAtIndexPath方法:

C代码

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

[tableView deselectRowAtIndexPath:indexPath animated:YES];

}

C代码

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

[tableView deselectRowAtIndexPath:indexPath animated:YES];

}

在@end之前添加方法:

C代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: