gpt4 book ai didi

uitableview - iOS 两个 UITableView 在 storyboard 中如何处理

转载 作者:行者123 更新时间:2023-12-02 05:35:10 25 4
gpt4 key购买 nike

在我的 iPad 应用 Storyboard设计中,添加了两个 TableView 。

一个 TableView 用于显示文件夹名称,另一个 TableView 用于显示文件名。 When ever a folder table view cell is selected the files inside the selected folder needs to to be displayed in the other table view(the files table view).

我的问题是

我很困惑

  • 如何在 ViewController 中为每个 TableView 添加委托(delegate)和数据源?或者是否可以在 ViewController 以外的自定义类中为每个 TableView 添加数据源和委托(delegate)?

  • 如何处理单元格的选择?

请帮忙!

最佳答案

首先:为什么不直接在占据整个屏幕的推送 viewController 上显示文件?对我来说似乎更直观。

如果你想用两个 tableView 来做,并假设它们使用动态单元格而不是:
1、在你的view controller的.h文件中

像这样指定两个 tableView 属性:

@property (weak, nonatomic) IBOutlet UITableView *foldersTableView;
@property (weak, nonatomic) IBOutlet UITableView *filesTableView;

实现 UITableVIew 的两个委托(delegate)协议(protocol)

@interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate> 

2, 将两个 UITableView 添加到您的 ViewController 中,然后...

  • ...将您的奥特莱斯链接到两个表格 View
  • ...在属性检查器上将 foldersTableView 的 Tag 设置为 1,将 filesTableView 的 Tag 设置为 2
  • ...选择每个 UITableView,转到连接检查器并将它们的两个委托(delegate)方法(委托(delegate)和数据源)链接到您的 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 之前的版本,请不要忘记 @synthesize .m 文件中的属性。

关于uitableview - iOS 两个 UITableView 在 storyboard 中如何处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11807289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com