MacOS 开发

来源:互联网 发布:淘宝 最贵的包子 编辑:程序博客网 时间:2024/06/03 19:38

  • NSSavePanel
  • 1需要设置权限
    • 示例打开文件夹并保存图片到文件夹
  • NSOpenPanel
    • 常用的属性
    • 调用示例
      • OS X 6之后
      • OS X 6之前
  • 参考资料


NSSavePanel

1、需要设置权限

路径:target –> capabilitys –> file access
设置 user selected file 为 read/write。
file access

如果不设置,会报错:
file access error


示例:打开文件夹,并保存图片到文件夹:

    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];        }    }];

效果图如下:
NSSavePanel

可见,设置title不会显示;


NSOpenPanel

常用的属性

在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