在我的iPad应用程序故事板设计中,添加了两个表视图。
一个表格视图用于显示文件夹名称,另一个表格视图用于显示文件名。当选择文件夹表格视图单元格时,所选文件夹内的文件需要显示在另一个表格视图(文件表格视图)中。
我的问题是
我很担心
ViewController
中为每个表格视图添加委托和数据源?或者是否可以在ViewController以外的自定义类中为每个表视图添加数据源和委托?和
请帮忙!
答案 0 :(得分:5)
首先关闭:为什么不在推动的viewController上显示文件,这会占用整个屏幕?对我来说似乎更直观。
如果你想用两个tableViews做,并假设他们使用动态单元格而不是:
1,在视图控制器的 .h文件中
指定两个tableView属性,如下所示:
@property (weak, nonatomic) IBOutlet UITableView *foldersTableView;
@property (weak, nonatomic) IBOutlet UITableView *filesTableView;
实现UITableVIew的两个委托协议
@interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
2,将两个UITableView添加到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
}
}
希望我能正确地得到一切。如果您使用的是预XCode 4.4,请不要忘记{。1}} .m文件中的属性。
答案 1 :(得分:0)
如果您使用多个表格,请不要忘记隐藏:
- (void)viewWillAppear:(BOOL)animated
{
[self.table2 setHidden:YES];
[self.table1 setHidden:NO];
// Probably reverse these in didSelectRow
}