MacOS 开发 - 打开文件夹Finder(NSOpenPanel)

时间:2021-10-22 22:06:53

常用的属性

在begin之前设置好即可

  • CanChooseDirectories 是否可以选择目录
  • AllowsMultipleSelection 是否允许多选
  • AllowedFileTypes 允许选择的文件类型,如果都可以的话,就写nil
  • DirectoryURL 默认打开的路径
  • Prompt 默认的“打开”那两个字可以改变

调用示例

在按钮点击方法中,调用下面方法:

OS X 6之后

- (void)pickFile{

NSOpenPanel* panel = [NSOpenPanel openPanel];

[panel setAllowsMultipleSelection:YES]; //是否允许多选file

[panel beginWithCompletionHandler:^(NSInteger result) {
if (result == NSOKButton) {
NSMutableArray* filePaths = [[NSMutableArray alloc] init];
for (NSURL* elemnet in [panel URLs]) {
[filePaths addObject:[elemnet path]]
;
}

NSLog(@"filePaths : %@",filePaths);
}

}];
}

OS X 6之前

- (void)openFinder{
NSOpenPanel *panel = [NSOpenPanel openPanel];

[panel setCanChooseFiles:YES]; //是否能选择文件file

[panel setCanChooseDirectories:YES]; //是否能打开文件夹

[panel setAllowsMultipleSelection:YES]; //是否允许多选file

NSInteger finded = [panel runModal]; //获取panel的响应

if (finded == NSFileHandlingPanelOKButton) {

// NSFileHandlingPanelCancelButton = NSModalResponseCancel; NSFileHandlingPanelOKButton = NSModalResponseOK,

for (NSURL *url in [panel URLs]) {

NSLog(@"文件路径--->%@",url);
//同时这里可以处理你要做的事情 do something

}
}
}

保存文件可使用 NSSavePanel

参考资料:

NSBeidou:http://www.jianshu.com/p/9a413adbd9b8