私はNSOpenPanel
付属品のビューを持っています。アクセサリ ビューはシンプルです。チェックボックスをオンにすると、ユーザーは任意のファイルを選択できます。チェックを外すと、サポートされている拡張子のリストにファイルが含まれている必要があります。
NSOpenPanel
初期化と表示:
NSOpenPanel* dialog = [NSOpenPanel openPanel];
[dialog setAllowedFileTypes:allowedFileTypes];
[dialog setAccessoryView:openPanelAccessoryView];
openPanel = dialog;
[dialog beginSheetModalForWindow:[self activeWindow]
completionHandler:^(NSInteger result)
{
...
}];
IBAction
チェックボックスの場合:
- (void)openUnrecognizedFiles:(id)sender
{
if ([sender state])
[openPanel setAllowedFileTypes:nil];
else
[openPanel setAllowedFileTypes:@[@"dsk"]];
}
documentationによるとsetAllowedFileTypes
、パネルが表示されている間に使用できます:
許可されたファイル タイプは、パネルの実行中に (たとえば、アクセサリ ビューから) 変更できます。
ただし、これは期待どおりに機能していないようです。現在のビューはリロードされません。スクロールすると、新しい設定に応じてさらに下のファイルが有効/無効になります。ただし、最初に表示されていたファイルは影響を受けません。
ユーザーがアクセサリ ビューのチェックボックスを切り替えたときに現在のディレクトリの内容を更新する方法が必要ですが、それを行う方法が見つからないようです。助言がありますか?
編集、2013 年 10 月 15 日: これは、何よりもマーベリックスのバグが原因のようです。ここで2人のコメント投稿者が指摘したように、Mountain Lionで実行されている同じコードは問題なく動作します.