2013-08-30 67 views
0

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

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

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

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

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

+0

你在寻找类似treeview的东西吗?喜欢的东西,>>根 >节点1 > Node1a > Node1a1 > Node1b > Node1b1 > Node1b2 > Node1b3 >节点2 > Node2a > Node2a1 –

回答

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]; 
    } 
} 
+1

太感谢你了,奔!我会尝试。你是该死的,我需要在线阅读更多示例代码。再次感谢。 –

0

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

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

3>重新加载你的表视图,并调用表视图的委托(根据你的响应改变委托方法)。