0

我的问题是我有一个文件夹列表,文件夹目录将显示在 tableview 上,当用户点击文件夹(tableview 单元格)时,我需要跳转到文件夹的下一级,tableview 将显示其子文件, (注意:不是树形结构,只显示其所有子文件,当用户点击单元格中的文件夹时,我从服务器获取文件夹的下一级目录)。在子文件列表中,如果用户点击子文件夹我需要显示其子文件的列表等等。

我的想法是创建 UITableViewController 的子类,当用户选择一行时,它将重新创建自身的实例。将第一个实例放在一个导航控制器中,并使用 [navigationController pushViewController: animated] 逐个推送多个级别。但我不知道如何覆盖该方法

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

实现我的想法。谢谢大家,我需要你的帮助!

4

2 回答 2

0

我认为这是您想要的基本概念。希望它能让你开始。一定要阅读 UITableViews 并在网上或参考书中查看一些示例代码。

@interface FileTableViewController <UITableViewController>
@property (nonatomic, retain) NSArray *filenames; // includes dirnames
@property (nonatomic, retain) NSArray *dirNames;
@end

@implementation FileTableViewController

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [filenames count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [[UITableViewCell alloc] dequeueReuseableCellWithIdentifier:@"cell"];
    cell.textLabel.text = self.filenames[indexPath.row];
    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *filename = self.filenames[indexPath.row];
    if (self.dirnames containsObject:filename)
    {
        FileTableViewController *subVC = [[FileTableViewController alloc] init];
        subVC.filenames = [self filenamesForSubDir:filename];
        subVC.dirnnames = [self dirnamesForSubDir:filename];
        [self.navigationController pushViewController:subVC animated:YES];
    }
}
于 2013-08-30T04:46:10.743 回答
0

1> 只需从 didSelectRowAtIndexPath 中获取下一个目录的路径即可。

2> 如果您收到响应,则将 cellForRowAtIndexPath 中用于显示文件夹/文件名称的旧数据数组替换为响应数据。

3> 重新加载您的表格视图,表格视图的代表将被调用。(根据您的响应更改委托方法)。

于 2013-08-30T04:51:13.510 回答