簡體   English   中英

NSOpenPanel的setDirectoryURL不起作用

[英]NSOpenPanel's setDirectoryURL doesn't work

我正在嘗試使用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"]];

有幾件事需要研究:

  1. ~/Pictures不是有效的網址。 file:///Users/user/Pictures是。 -[NSURL URLWithString:]需要有效的URL。 您可能想要使用-[NSURL fileURLWithPath:]代替。 它將/Users/user/Pictures轉換為file:///Users/user/Pictures
  2. Tildes不會自動展開,因此您需要使用[@"~/Pictures stringByExpandingTildeInPath]來獲取實際的文件路徑。

放在一起,將最后一行更改為:

[panel setDirectoryURL:[NSURL fileURLWithPath:[@"~/Pictures" stringByExpandingTildeInPath]]];

我認為這應該有效。

Lion中的面板需要一個URL:file:// localhost / Library / Desktop Pictures,但您的URL以實際路徑開頭。 請改用[NSURL fileURLWithPath:@"/Library/Desktop Pictures"]

快樂的編碼!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM