【发布时间】:2012-01-08 12:42:33
【问题描述】:
我想在同一个 UIView 上显示 2 UItableView。重要的是:当我在第一个表 (master) 上选择一行时,我想在第二个表 (detail) 上显示详细信息行。
为了做到这一点,我有:
- 创建了 1 个
UIViewController和 2 个UITableViewIB Outlet 属性,与故事板中的 2 个表格链接 - 在根
UIViewController中为UITableView设置委托和数据源 - 为每个
UITableView创建了 1 个UITableViewController - 为两个代表实现了所有必需的方法
我设法在第一个表中显示数据,但不是在第二个表中,尽管 tableView:numberOfRowsInSection: 对于这两个表是正确的。
当我在调试模式下运行我的应用程序时,我没有看到对详细信息表的 tableView:cellForRowAtIndexPath: 方法的任何调用。
我不明白我错过了什么或哪里错了。任何人都可以帮助我吗?
这是我的部分代码:
RootViewController.h
@interface RootViewController : UIViewController
{
MasterTVController * masterController;
IBOutlet UITableView * masterTV;
IBOutlet UITableView * detailTV;
}
RootViewController.m
-(void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
if (masterController == nil) {
masterController = [[masterTVController alloc] init];
}
[masterTV setDataSource:masterController];
[masterTV setDelegate:masterController];
masterController.view = masterController.tableView;
[detailTV setDataSource:masterController.detailTVController];
[detailTV setDelegate:masterController.detailTVController];
}
MasterTVController.h
@interface MasterTVController : UITableViewController <UITableViewDataSource, UITableViewDelegate>
{
NSMutableArray * masterArray;
NSMutableArray * detailArray;
DetailTVController * detailTVController;
}
MasterTVController.m
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
self.detailTVController = [[DetailTVController alloc] init];
self.detailTVController.view = self.detailTVController.tableView;
}
return self;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
self.detailArray = [[self.masterArray objectAtIndex:indexPath.row] objectForKey:@"details"];
self.detailTVController.dataArray = detailArray;
[self.detailTVController.tableView reloadData];
}
【问题讨论】:
-
发布您的一些代码通常可以帮助人们理解您的问题。
-
我已经发布了一些代码来展示我想要管理这两个表的方式。
-
我没有看到任何代码来初始化
MasterTVController的detailTVController属性。 -
我已经为 MasterTVController 添加了 init 方法
-
masterController.tableView如何连接到情节提要中的主表视图?detailTVController.tableView如何连接到情节提要中的明细表视图?
标签: objective-c cocoa-touch uitableview storyboard master-detail