文章目錄
一、NSSavePanel
1、需要設置權限
路徑:target --> capabilitys --> file access
設置 user selected file 爲 read/write。
如果不設置,會報錯:
1.1 示例:打開文件夾,並保存圖片到文件夾:
NSSavePanel *panel = [NSSavePanel savePanel];
panel.title = @"保存圖片";
[panel setMessage:@"選擇圖片保存地址"];//提示文字
[panel setDirectoryURL:[NSURL fileURLWithPath:[NSHomeDirectory() stringByAppendingPathComponent:@"Pictures"]]];//設置默認打開路徑
[panel setNameFieldStringValue:picName];
[panel setAllowsOtherFileTypes:YES];
[panel setAllowedFileTypes:@[@"jpg",@"png"]];
[panel setExtensionHidden:NO];
[panel setCanCreateDirectories:YES];
[panel beginSheetModalForWindow:self.window completionHandler:^(NSInteger result){
if (result == NSModalResponseOK)
{
NSString *path = [[panel URL] path];
NSData *tiffData = [self.imgView.image TIFFRepresentation];
[tiffData writeToFile:path atomically:YES];
}
}];
效果圖如下:
可見,設置title不會顯示;
二、NSOpenPanel
1、常用的屬性
在begin之前設置好即可
- CanChooseDirectories 是否可以選擇目錄
- AllowsMultipleSelection 是否允許多選
- AllowedFileTypes 允許選擇的文件類型,如果都可以的話,就寫nil
- DirectoryURL 默認打開的路徑
- Prompt 默認的“打開”那兩個字可以改變
2、調用示例
在按鈕點擊方法中,調用下面方法:
2.1 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);
}
}];
}
2.2 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