Bellow我有一些代码列出了保存视频文件的文档目录的路径。然后代码在单元格中列出,但它是完整路径,只使用一个单元格。所以我想要做的是首先减少路径,只列出文档控制器中文件的文件名,然后为每个文件分配一个单独的单元格。这可能吗?
以下是我用来列出文档目录路径的代码:
- (void)viewDidLoad
{
[super viewDidLoad];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
filePathsArray = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:documentsDirectory error:nil];
}
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
if(!filePathsArray) // if data loading has been completed, return the number of rows ELSE return 1
{
if ([filePathsArray count] > 0)
return [filePathsArray count];
else
return 1;
}
return 1;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MainCell"];
if (cell == nil) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"MainCell"];
}
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
filePathsArray = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:documentsDirectory error:nil];
cell.textLabel.text = [documentsDirectory stringByAppendingPathComponent:[filePathsArray objectAtIndex:indexPath.row]];
return cell;
}
提前致谢。
答案 0 :(得分:0)
就像现在一样,每次调用方法viewDidLoad
时,您都会在tableView:cellForRowAtIndexPath:
和中加载文件路径,这是低效且不必要的。
无论如何,你只需要:
cell.textLabel.text = [filePathsArray[indexPath.row] lastPathComponent];
如果我正确理解您的要求。
答案 1 :(得分:0)
使用此:
NSFileManager *fm [NSFileManager defaultManager];
NSArray *documentsDirectoryContents = [[fm contentsOfDirectoryAtPath:documentDirectory error:nil] mutableCopy];
它适用于我,只返回文档目录(不是完整路径)中文件的文件名。 然后使用该数组作为表的数据源。 因此,请将每个单元格的文本设置为相应的文件名。
此外,正如NSBum所说,只有当您希望刷新文档目录的内容时才能获取文件名 - 换句话说,只有当您想要更新表时才能获得文件名。