我正在尝试为NSOpenPanel使用新方法并设置其初始目录。问题是它只在第一次工作,然后它只是“记住”最后选择的文件夹,我不想要。我必须使用折旧的runModalForDirectory:file:使它工作。它不太理想,因为它被弃用了10.6,但幸运的是它仍适用于Lion。
我的代码是:
NSOpenPanel *panel = [NSOpenPanel openPanel];
[panel setAllowedFileTypes:[NSArray arrayWithObjects: @"jpg",@"JPG",@"png", nil]];
panel.canChooseDirectories = YES;
panel.allowsMultipleSelection = YES;
handler = ^(NSInteger result) {stuff};
[panel setDirectoryURL:[NSURL URLWithString:@"/Library/Desktop Pictures"]];
答案 0 :(得分:7)
有几件事需要研究:
~/Pictures
不是有效的网址。 file:///Users/user/Pictures
是。 -[NSURL URLWithString:]
需要有效的网址。您可能希望使用-[NSURL fileURLWithPath:]
代替。它会将/Users/user/Pictures
变为file:///Users/user/Pictures
。[@"~/Pictures stringByExpandingTildeInPath]
来获取实际的文件路径。放在一起,将最后一行改为:
[panel setDirectoryURL:[NSURL fileURLWithPath:[@"~/Pictures" stringByExpandingTildeInPath]]];
我认为这应该有用。
答案 1 :(得分:3)
Lion中的面板需要一个URL:file:// localhost / Library / Desktop Pictures,但您的URL以实际路径开头。
请改用[NSURL fileURLWithPath:@"/Library/Desktop Pictures"]
。
快乐的编码!