iOS开发:navigationcontrol…
2015-09-23 21:26
471 查看
5、现在为止,我们还看不到什么效果,那是因为controllerList这个数组现在是空的。
接下来我们创建一个Table ViewController,用于显示电影列表。建立的方法同建立RootViewController一样,名称为:MovieViewController。
之后再创建一个ViewController,名称为MovieDetailViewController,用于显示电影的详细信息,这次我们要选中includexib file…选项,并且Subof选项为UIViewController:
![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
6、打开MovieDetailViewController.xib,拖一个Label到中间,并拉长。将其映射到MovieDetailViewController.h中,名称为detailLabel:
![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
然后在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代码
接下来我们创建一个Table ViewController,用于显示电影列表。建立的方法同建立RootViewController一样,名称为:MovieViewController。
之后再创建一个ViewController,名称为MovieDetailViewController,用于显示电影的详细信息,这次我们要选中includexib file…选项,并且Subof选项为UIViewController:
![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
6、打开MovieDetailViewController.xib,拖一个Label到中间,并拉长。将其映射到MovieDetailViewController.h中,名称为detailLabel:
![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
然后在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代码
相关文章推荐
- iOS开发:使用ToolBar切换视图
- iOS开发:NavigationBar
- iOS大典之点击旋转, 点击停止
- ios激情详解之动画页面翻转
- ios实现点击空白处关闭键盘
- IOS 控件的尺寸放大和缩小
- iOS 控件的位置移动
- 【读书笔记】iOS-属性列表
- iOS开发 ----- AFNetWorking
- 【读书笔记】iOS-属性列表
- ios激情详解之动画缩放
- iOS 页面跳转
- 随波逐流之iOS AlertView(弹出框)详解
- IOS6及以后如何标识不同设备
- iOS开发脚踏实地学习day14-绘图
- 随波逐流之iOS Layer 详解
- ios激情详解之动画旋转
- iOS使用定时器,并添加到子线程运行
- iOS安全攻防(一):Hack必备的命令与工具
- iOS-程序发布-32位和64位系统的兼容