【问题标题】:Multi-level UITableView Show多级 UITableView 展示
【发布时间】:2013-08-30 03:18:53
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 您在寻找类似树视图的东西吗?类似于 >> 根 >Node1 >Node1a >Node1a1 >Node1b >Node1b1 >Node1b2 >Node1b3 >Node2 >Node2a >Node2a1

标签: ios objective-c uitableview


【解决方案1】:

我认为这是您想要的基本概念。希望它能让你开始。一定要阅读 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];
    }
}

【讨论】:

  • 非常感谢,本!我会试试。你说得对,我需要在线阅读更多示例代码。再次感谢。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2019-08-31
    • 2012-09-13
    • 2013-05-22
    • 2021-09-21
    • 2014-08-21
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    相关资源
    最近更新 更多