2011-10-19 3 views
2

NSOpenPanelの新しいメソッドを使用して、その初期ディレクトリを設定しようとしています。問題は最初にしか動作しないということで、最後に選択したフォルダは「覚えている」ということです。私は、減価償却されたrunModalForDirectory:file:を使用して動作させる必要があります。それは10.6で廃止されたので理想的ではありませんが、ありがたいことにライオンではまだ動作しています。NSOpenPanelのsetDirectoryURLが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

*あなたが何を望んでいるのではなく、ユーザーが望むものを考えてください。それを言って、それはバグのように見えます。 – JeremyP

答えて

7

に見てカップルの事があります。

  1. ~/Picturesは有効ではありませんURL。 です。 -[NSURL URLWithString:]には有効なURLが必要です。代わりに-[NSURL fileURLWithPath:]を使用します。 /Users/user/Picturesはになります。
  2. チルドは自動的に展開されないため、[@"~/Pictures stringByExpandingTildeInPath]を使用して実際のファイルパスを取得します。私はそれが動作するはずだと思う

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

    :一緒に入れ

は、最後の行を次のように変更します。

+0

あなたの答えをありがとうが、私が言ったように、それは初めて働いた。質問のパスを "/ Library/Desktop Pictures"に更新しましたが、どちらも動作しませんでした(私はそれを使い始めました)。ありがとう – Tibidabo

+0

[NSURL fileURLWithString:[@ "〜/ path/to/dir" stringByExpandingTildeInPath]]は私のために働いていました。ありがとう。 – alesplin

+1

'fileURLWithString:'が見つかりませんでしたが、 'URLWithString:'が見つかりました。これはタイプミスでしたか? – Todd

3

Lionのパネルでは、file:// localhost/Library/Desktop PicturesのようなURLが必要ですが、URLは実際のパスで始まります。 代わりに[NSURL fileURLWithPath:@"/Library/Desktop Pictures"]を使用してください。

コーディングハッピー!

関連する問題