在我的 iPad 应用故事板设计中,添加了两个表格视图。
一个表格视图用于显示文件夹名称,另一个表格视图用于显示文件名。选择文件夹表格视图单元格时,所选文件夹内的文件需要显示在另一个表格视图(文件表格视图)中。
我的问题是
我很困惑
- 如何为每个表视图添加委托和数据源
ViewController
?或者是否可以在 ViewController 以外的自定义类中为每个表视图添加数据源和委托?
和
- 如何处理单元格的选择?
请帮忙 !
在我的 iPad 应用故事板设计中,添加了两个表格视图。
一个表格视图用于显示文件夹名称,另一个表格视图用于显示文件名。选择文件夹表格视图单元格时,所选文件夹内的文件需要显示在另一个表格视图(文件表格视图)中。
我的问题是
我很困惑
ViewController
?或者是否可以在 ViewController 以外的自定义类中为每个表视图添加数据源和委托?和
请帮忙 !
首先:为什么不直接在占据整个屏幕的推送视图控制器上显示文件?对我来说似乎更直观。
如果你想用两个 tableViews 来做,并假设它们使用动态单元格:
1,在你的视图控制器的 .h 文件中
像这样指定两个 tableView 属性:
@property (weak, nonatomic) IBOutlet UITableView *foldersTableView;
@property (weak, nonatomic) IBOutlet UITableView *filesTableView;
实现 UITableVIew 的两个委托协议
@interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
2,将两个 UITableViews 添加到您的 ViewController 上,然后...
3,在你的 ViewController 的 .m 文件中实现 UITableView 的三个数据源方法,如下所示:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
if (tableView.tag == 1) {
return theNumberOfSectionsYouWantForTheFolderTableView;
} else {
return theNumberOfSectionsYouWantForTheFilesTableView;
}
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
if (tableView.tag == 1) {
return [foldersArray count];
} else {
return [filesArray count];
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (tableView.tag == 1) {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// Configure the cell...
return cell;
} else {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// Configure the cell...
return cell;
}
}
4、实施选择:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (tableView.tag == 1) {
//fill filesArray with the objects you want to display in the filesTableView...
[filesTableView reloaddata];
} else {
//do something with the selected file
}
}
希望我得到了正确的一切。@synthesize
如果您使用的是 XCode 4.4 之前的版本,请不要忘记.m 文件中的属性。
如果您使用多个表,请不要忘记酌情隐藏:
- (void)viewWillAppear:(BOOL)animated
{
[self.table2 setHidden:YES];
[self.table1 setHidden:NO];
// Probably reverse these in didSelectRow
}