SetDirectoryURL NSOpenPanel не работает - PullRequest
3 голосов
/ 19 октября 2011

Я пытаюсь использовать новые методы для 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"]];

Ответы [ 2 ]

7 голосов
/ 19 октября 2011

Есть пара вещей, на которые стоит обратить внимание:

  1. ~/Pictures не является действительным URL. file:///Users/user/Pictures есть. -[NSURL URLWithString:] требуется действительный URL. Вы, вероятно, хотите использовать -[NSURL fileURLWithPath:] вместо этого. Это превратит /Users/user/Pictures в file:///Users/user/Pictures.
  2. Тильды не раскрываются автоматически, поэтому вы хотите использовать [@"~/Pictures stringByExpandingTildeInPath] для получения фактического пути к файлу.

Соедините, измените последнюю строку на:

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

Я думаю, это должно сработать.

3 голосов
/ 24 октября 2011

Панель в Lion ожидает URL-адрес, например: file: // localhost / Library / Desktop Pictures, но ваш URL-адрес начинается с фактического пути.Вместо этого используйте [NSURL fileURLWithPath:@"/Library/Desktop Pictures"].

Удачного кодирования!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...