我有一个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"]];
}
根据文档,可以setAllowedFileTypes
在显示面板时使用:
允许的文件类型可以在面板运行时更改(例如,从附件视图)。
但是,这似乎不像预期的那样工作:当前视图不会重新加载 - 当您滚动时,文件会根据新设置启用/禁用;但是,最初可见的文件不受影响。
当用户切换附件视图复选框时,我需要一些方法来刷新当前目录的内容 - 但是,我似乎找不到任何方法来做到这一点。有什么建议么?
编辑,2013 年 10 月 15 日:这似乎是由 Mavericks 中的一个错误引起的。在 Mountain Lion 上运行的相同代码没有任何问题,就像这里的两位评论者指出的那样。