我的问题是我有一个文件夹列表,文件夹目录将显示在tableview上,当用户点击文件夹(tableview单元格)时我需要跳转到文件夹的下一级,tableview将显示其子文件,(注意:不是树结构,只显示其所有子文件,当用户点击单元格中的文件夹时,我从服务器获取文件夹的下一级目录)。在子文件列表中,如果用户点击子文件夹我需要显示其子文件列表等。
我的想法是创建一个UITableViewController的子类,当用户选择一行时,它将重新创建自己的实例。将第一个实例放在导航控制器中并使用 [navigationController pushViewController:animated]逐个推送多个级别。 但我不知道如何覆盖方法
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
实现我的想法。谢谢大家,我需要你的帮助!
答案 0 :(得分: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&GT;只需从didSelectRowAtIndexPath获取下一个目录的路径。
2 - ;如果得到响应,则替换cellForRowAtIndexPath中使用的旧数据数组,以显示包含响应数据的文件夹/文件名。
3&GT;重新加载表视图,将调用表视图的委托。(根据您的响应更改委托方法)。