IOS之导航控制器与表视图
2012-09-17 16:40
441 查看
7.1 导航控制器
7.2 创建第一级控制器
7.3 第一个二级控制器
7.4 第一个三级控制器
7.5 第二个二级表控制器
7.6 第三个二级表控制器
7.7 第四个二级表控制器
7.8 第五个二级表视图控制器
7.8 第六个二级表视图控制器
导航控制器和表视图密不可分。严格的说,要完成导航控制器的功能并不需要表视图。然而,在实际的应用程序中使用导航控制器时,几乎总是要实现至少一个表,并且通常多个表,因为导航控制器的强大之处在于它能够处理复杂的分层数据,在iPhone的小屏幕上,连续的使用表示分层数据最理想的方式。
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/20120912072250857.png)
RootViewController.h
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722508939.png)
RootViewController.m
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722518972.png)
实现TableView数据源方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722512908.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722514893.png)
cell.accessoryType属性设定表视图单元格扩展图标类型。单元格扩展图标类型:
UITableViewCellAccessoryNone,没有扩展图标;
UITableViewCellAccessoryDisclosureIndicator,扩展指示器,触摸该图标将切换到下一级表视图,图标为
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722517086.png)
UITableViewCellAccessoryDetailDisclosureButton,细节展示按钮,触摸该行将显示当前行的更多详细信息视图,图标为
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722512102.png)
UITableViewCellAccessoryCheckmark,选中标志,当选中某一行时候标志该行,图标为
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722525483.png)
实现TableView委托方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722525516.png)
二级表视图控制器
由于二级控制器也是表视图控制器,而且我们需要在为每个页面指定一个图片,所以我们定义了一个父类SecondLevelViewController
SecondLevelViewController
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722524677.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722522201.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722536138.png)
DisclosureButtonController.h
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722539759.png)
DisclosureButtonController.m
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722538156.png)
实现TableView数据源方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/20120912072254697.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722546270.png)
实现TableView委托方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722544351.png)
上面的委托方法,是用户选中单元格后触发的方法。
[self.navigationController pushViewController:childController animated:YES];
是将详细视图控制器放置到导航控制器栈中,并以动画效果显示详细视图。
RootViewController中 viewDidLoad方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722552748.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722551909.png)
DisclosureDetailController.h
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722557482.png)
message从上一个屏幕传递过来的消息 label显示消息的控件。
m文件中的初始化方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722555007.png)
不要使用viewDidLoad 方法,而是使用viewWillAppear:animated:方法,该方法是在屏幕出现时候调用。
m文件中释放方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722565355.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/20120912072256928.png)
CheckListController.h
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/2012091207225689.png)
CheckListController.m
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722562074.png)
实现TableView数据源方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722577647.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722577996.png)
实现TableView委托方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722575205.png)
int oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : -1;
获得上次选择的单元格行,如果lastIndexPath为nil这设置为-1
newCell.accessoryType = UITableViewCellAccessoryCheckmark;
设置新单元格为UITableViewCellAccessoryCheckmark oldCell.accessoryType = UITableViewCellAccessoryNone;
设置旧单元格为UITableViewCellAccessoryNone
RootViewController中 viewDidLoad方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722573602.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722589731.png)
RowControlsController.h
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722583668.png)
RowControlsController.m
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722587289.png)
实现TableView数据源方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722592862.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722599307.png)
由于我们没有nib文件,所以按钮要通过代码自己写按钮, 如下:
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
指定按钮的边框大小:
button.frame = CGRectMake(0.0f, 0.0f, buttonUpImage.size.width, buttonUpImage.size.height);
设定按钮正常状态时候背景图片
[button setBackgroundImage:buttonUpImage forState:UIControlStateNormal];
设定按钮高亮状态时候背景图片
[button setBackgroundImage:buttonDownImage forState:UIControlStateHighlighted];
button setTitle:@"Tap" forState:UIControlStateNormal 设置按钮正常状态时候的title内容。
[button addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];
由于没有nib文件按钮事件不能通过IB设计工具添加,要通过代码实现与按钮事件的处理。
cell.accessoryView = button;
把按钮对象赋给单元格的accessoryView(扩展视图)。
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722598783.png)
实现TableView委托方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722592404.png)
RowControlsController.m
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723008849.png)
buttonTapped:方法,是点击单元格中的按钮触发事件。
UITableViewCell *buttonCell = (UITableViewCell *)[senderButton superview];
其中superview获得父控件,即表视图单元格。
NSInteger buttonRow = [[self.tableView indexPathForCell:buttonCell] row];
其中获得选择的单元格中的按钮所在的单元格行数。
RootViewController中 viewDidLoad方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723004422.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723008359.png)
MoveMeController.h
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723015568.png)
MoveMeController.m
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723018109.png)
toggleMove方法,是点击导航控制器右边按钮时候触发事件,如果表单元格处于编辑状态时候,设为不可编辑,反之可以编辑单元格。
MoveMeController.m
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723018142.png)
实现TableView数据源方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723022079.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723025700.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723027685.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723021622.png)
控制单元格行是否可以移动,本例中我们是可以移动所有行。
实现TableView委托方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/20120912072303783.png)
我们希望能够对行重新排序,不过不希望用户能够删除或插入行,因此,我们实现了上面的委托方法,通过这个方法,表视图可以询问指定的行是否可以被删除,或是否可以将新行插入到指定的位置。通过为每一行返回
UITableViewCellEditingStyleNone,表示我们不支持插入或删除任何行。
RootViewController中 viewDidLoad方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723031131.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723038341.png)
DeleteMeController.h
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723038689.png)
DeleteMeController.m
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723045898.png)
toggleMove方法,是点击导航控制器右边按钮时候触发事件,如果表单元格处于编辑状态时候,设为不可编辑,反之可以编辑单元格。
DeleteMeController.m
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723044295.png)
实现TableView数据源方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723046280.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723056313.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723056346.png)
-(void)tableView:(UITableView *)tableView commitEditingStyle:
(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
该委托方法是实现删除和插入功能。
RootViewController中 viewDidLoad方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723054427.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723064460.png)
TeamsViewController.h
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/2012091207230633.png)
TeamsViewController.m
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723062018.png)
实现TableView数据源方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723061179.png)
实现TableView数据源方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723079576.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723079609.png)
可编辑表视图控制器
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723071594.png)
TeamsDetailController.h
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723088803.png)
TeamsDetailController.m
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/20120912072308788.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723082773.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723084757.png)
实现TableView数据源方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723093918.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723095903.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723091476.png)
实现TableView委托方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723093461.png)
RootViewController中 viewDidLoad方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723105446.png)
注:
1 本教程是基于关东升老师的教程
2 基于黑苹果10.6.8和xcode4.2
3 本人初学,有什么不对的望指教
4 教程会随着本人学习,持续更新
5 教程是本人从word笔记中拷贝出来了,所以格式请见谅
7.2 创建第一级控制器
7.3 第一个二级控制器
7.4 第一个三级控制器
7.5 第二个二级表控制器
7.6 第三个二级表控制器
7.7 第四个二级表控制器
7.8 第五个二级表视图控制器
7.8 第六个二级表视图控制器
7.1 导航控制器
关于导航控制器和表视图导航控制器和表视图密不可分。严格的说,要完成导航控制器的功能并不需要表视图。然而,在实际的应用程序中使用导航控制器时,几乎总是要实现至少一个表,并且通常多个表,因为导航控制器的强大之处在于它能够处理复杂的分层数据,在iPhone的小屏幕上,连续的使用表示分层数据最理想的方式。
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/20120912072250857.png)
7.2 创建第一级控制器
一级控制器RootViewController还是一个UITableViewController,它并不是我们说的导航控制器,我们在委托Delegate中定义了导航控制器UINavigationController,事实上UINavigationController才真正意义的根控制器。RootViewController.h
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722508939.png)
RootViewController.m
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722518972.png)
实现TableView数据源方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722512908.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722514893.png)
cell.accessoryType属性设定表视图单元格扩展图标类型。单元格扩展图标类型:
UITableViewCellAccessoryNone,没有扩展图标;
UITableViewCellAccessoryDisclosureIndicator,扩展指示器,触摸该图标将切换到下一级表视图,图标为
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722517086.png)
UITableViewCellAccessoryDetailDisclosureButton,细节展示按钮,触摸该行将显示当前行的更多详细信息视图,图标为
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722512102.png)
UITableViewCellAccessoryCheckmark,选中标志,当选中某一行时候标志该行,图标为
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722525483.png)
实现TableView委托方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722525516.png)
二级表视图控制器
由于二级控制器也是表视图控制器,而且我们需要在为每个页面指定一个图片,所以我们定义了一个父类SecondLevelViewController
SecondLevelViewController
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722524677.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722522201.png)
7.3 第一个二级控制器
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722536138.png)
DisclosureButtonController.h
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722539759.png)
DisclosureButtonController.m
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722538156.png)
实现TableView数据源方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/20120912072254697.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722546270.png)
实现TableView委托方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722544351.png)
上面的委托方法,是用户选中单元格后触发的方法。
[self.navigationController pushViewController:childController animated:YES];
是将详细视图控制器放置到导航控制器栈中,并以动画效果显示详细视图。
RootViewController中 viewDidLoad方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722552748.png)
7.4 第一个三级控制器
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722551909.png)
DisclosureDetailController.h
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722557482.png)
message从上一个屏幕传递过来的消息 label显示消息的控件。
m文件中的初始化方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722555007.png)
不要使用viewDidLoad 方法,而是使用viewWillAppear:animated:方法,该方法是在屏幕出现时候调用。
m文件中释放方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722565355.png)
7.5 第二个二级表控制器
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/20120912072256928.png)
CheckListController.h
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/2012091207225689.png)
CheckListController.m
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722562074.png)
实现TableView数据源方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722577647.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722577996.png)
实现TableView委托方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722575205.png)
int oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : -1;
获得上次选择的单元格行,如果lastIndexPath为nil这设置为-1
newCell.accessoryType = UITableViewCellAccessoryCheckmark;
设置新单元格为UITableViewCellAccessoryCheckmark oldCell.accessoryType = UITableViewCellAccessoryNone;
设置旧单元格为UITableViewCellAccessoryNone
RootViewController中 viewDidLoad方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722573602.png)
7.6 第三个二级表控制器
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722589731.png)
RowControlsController.h
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722583668.png)
RowControlsController.m
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722587289.png)
实现TableView数据源方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722592862.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722599307.png)
由于我们没有nib文件,所以按钮要通过代码自己写按钮, 如下:
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
指定按钮的边框大小:
button.frame = CGRectMake(0.0f, 0.0f, buttonUpImage.size.width, buttonUpImage.size.height);
设定按钮正常状态时候背景图片
[button setBackgroundImage:buttonUpImage forState:UIControlStateNormal];
设定按钮高亮状态时候背景图片
[button setBackgroundImage:buttonDownImage forState:UIControlStateHighlighted];
button setTitle:@"Tap" forState:UIControlStateNormal 设置按钮正常状态时候的title内容。
[button addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];
由于没有nib文件按钮事件不能通过IB设计工具添加,要通过代码实现与按钮事件的处理。
cell.accessoryView = button;
把按钮对象赋给单元格的accessoryView(扩展视图)。
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722598783.png)
实现TableView委托方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120722592404.png)
RowControlsController.m
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723008849.png)
buttonTapped:方法,是点击单元格中的按钮触发事件。
UITableViewCell *buttonCell = (UITableViewCell *)[senderButton superview];
其中superview获得父控件,即表视图单元格。
NSInteger buttonRow = [[self.tableView indexPathForCell:buttonCell] row];
其中获得选择的单元格中的按钮所在的单元格行数。
RootViewController中 viewDidLoad方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723004422.png)
7.7 第四个二级表控制器
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723008359.png)
MoveMeController.h
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723015568.png)
MoveMeController.m
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723018109.png)
toggleMove方法,是点击导航控制器右边按钮时候触发事件,如果表单元格处于编辑状态时候,设为不可编辑,反之可以编辑单元格。
MoveMeController.m
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723018142.png)
实现TableView数据源方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723022079.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723025700.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723027685.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723021622.png)
控制单元格行是否可以移动,本例中我们是可以移动所有行。
实现TableView委托方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/20120912072303783.png)
我们希望能够对行重新排序,不过不希望用户能够删除或插入行,因此,我们实现了上面的委托方法,通过这个方法,表视图可以询问指定的行是否可以被删除,或是否可以将新行插入到指定的位置。通过为每一行返回
UITableViewCellEditingStyleNone,表示我们不支持插入或删除任何行。
RootViewController中 viewDidLoad方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723031131.png)
7.8 第五个二级表视图控制器
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723038341.png)
DeleteMeController.h
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723038689.png)
DeleteMeController.m
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723045898.png)
toggleMove方法,是点击导航控制器右边按钮时候触发事件,如果表单元格处于编辑状态时候,设为不可编辑,反之可以编辑单元格。
DeleteMeController.m
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723044295.png)
实现TableView数据源方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723046280.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723056313.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723056346.png)
-(void)tableView:(UITableView *)tableView commitEditingStyle:
(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
该委托方法是实现删除和插入功能。
RootViewController中 viewDidLoad方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723054427.png)
7.9 第六个二级表视图控制器
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723064460.png)
TeamsViewController.h
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/2012091207230633.png)
TeamsViewController.m
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723062018.png)
实现TableView数据源方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723061179.png)
实现TableView数据源方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723079576.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723079609.png)
可编辑表视图控制器
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723071594.png)
TeamsDetailController.h
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723088803.png)
TeamsDetailController.m
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/20120912072308788.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723082773.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723084757.png)
实现TableView数据源方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723093918.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723095903.png)
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723091476.png)
实现TableView委托方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723093461.png)
RootViewController中 viewDidLoad方法
![](http://images.cnblogs.com/cnblogs_com/syxchina/201209/201209120723105446.png)
注:
1 本教程是基于关东升老师的教程
2 基于黑苹果10.6.8和xcode4.2
3 本人初学,有什么不对的望指教
4 教程会随着本人学习,持续更新
5 教程是本人从word笔记中拷贝出来了,所以格式请见谅
相关文章推荐
- iOS 导航控制器和表视图
- iOS开发利用协议代理实现导航控制器UINavigationController视图之间的正向传值和反向传值
- 【iOS开发-26】利用协议代理实现导航控制器UINavigationController视图之间的正向传值和反向传值
- IOS开发-表视图LV3导航控制器
- IOS UITableView表视图和导航控制器的交互使用
- IOS之导航控制器与表视图
- iOS UI07_导航视图控制器
- IOS开发基础05(导航视图控制器,跳转视图控制器,模态)
- iOS在自定义视图(常用于自定义cell)中获取导航控制器上面的当前的控制器对象
- iOS基础控件-UITabBarController - 2 之UITabBarItem 详解,结合视图控制器和导航控制器的用法
- iOS 导航控制器、标签、表视图的创建方法
- IOS开发-表视图LV3导航控制器
- IOS-导航视图控制器的使用
- iOS开发系列课程(05) --- 导航视图控制器
- IOS视图控制器导航及生命周期研究Demo
- IOS开发学习笔记(导航控制器,视图控制器,模态)
- IOS编程教程:使用StoryBoard来建立导航控制器和表视图
- iOS Dev 深入浅出 导航控制器(二)with表视图相关操作
- [IOS]添加NavigationItem到导航视图控制器
- 4-读书笔记----iOS开发指南:从零基础到App Store上架--iOS视图控制器与导航模式