DirListVC *vc = [[DirListVC alloc] init];
vc.rootPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject;
[self.navigationController pushViewController:vc animated:YES];
DirListVC.h
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface DirListVC : UIViewController
@property (nonatomic, strong) NSString *rootPath;
@end
NS_ASSUME_NONNULL_END
DirListVC.m
#import "DirListVC.h"
@interface DirListVC ()<UITableViewDelegate, UITableViewDataSource>
@property (nonatomic, strong) UITableView *tableView;
@property (nonatomic, strong) NSArray *items;
@end
@implementation DirListVC
- (void)viewDidLoad {
[super viewDidLoad];
[self initView];
[self initData];
}
- (void)initData {
if (!_rootPath) {
//_rootPath = NSSearchPathForDirectoriesInDomains(NSUserDirectory, NSUserDomainMask, YES).lastObject;
_rootPath = NSHomeDirectory();
}
self.navigationItem.title = _rootPath;
NSFileManager *fm = [NSFileManager defaultManager];
NSArray<NSString *> *list = [fm contentsOfDirectoryAtPath:_rootPath error:nil];
NSLog(@"%@", list);
_items = list;
[self.tableView reloadData];
}
- (void)initView {
[self.view addConstraints:@[
[NSLayoutConstraint constraintWithItem:self.tableView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1.0 constant:0],
[NSLayoutConstraint constraintWithItem:self.tableView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeading multiplier:1.0 constant:0],
[NSLayoutConstraint constraintWithItem:self.tableView attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTrailing multiplier:1.0 constant:0],
[NSLayoutConstraint constraintWithItem:self.tableView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0],
]];
}
//要传完整路径
- (BOOL)isDirectory:(NSString *)filePath {
BOOL isDirectory = NO;
[[NSFileManager defaultManager] fileExistsAtPath:filePath isDirectory:&isDirectory];
return isDirectory;
}
//要传完整路径
- (BOOL)isDirectory1:(NSString *)filePath {
NSNumber *isDirectory;
NSURL *fileUrl = [NSURL fileURLWithPath:filePath];
[fileUrl getResourceValue:&isDirectory forKey:NSURLIsDirectoryKey error:nil];
return isDirectory.boolValue;
}
#pragma mark - UITableViewDelegate & UITableViewDataSource
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return self.items.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:(UITableViewCellStyleDefault) reuseIdentifier:@"cell"];
}
NSString *path = _items[indexPath.row];
BOOL dir = [self isDirectory1:[_rootPath stringByAppendingPathComponent:path]];
cell.textLabel.text = [NSString stringWithFormat:@"%@ %@", dir ? @"📁": @"📃", path];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *path = _items[indexPath.row];
BOOL dir = [self isDirectory1:[_rootPath stringByAppendingPathComponent:path]];
if (!dir) {
return;
}
DirListVC *vc = [[DirListVC alloc] init];
vc.rootPath = [_rootPath stringByAppendingPathComponent:path];
[self.navigationController pushViewController:vc animated:YES];
}
#pragma mark - getter
- (UITableView *)tableView {
if (!_tableView) {
_tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
_tableView.delegate = self;
_tableView.dataSource = self;
_tableView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:_tableView];
}
return _tableView;
}
@end
网友评论