Cocoa 显示NSOpenPanel时设置AllowedFileTypes
我有一个带有附件视图的Cocoa 显示NSOpenPanel时设置AllowedFileTypes,cocoa,nsopenpanel,Cocoa,Nsopenpanel,我有一个带有附件视图的NSOpenPanel。附件视图很简单-它是一个复选框,当选中时,允许用户选择任何文件;取消选中时,要求文件位于支持的扩展名列表中 NSOpenPanel初始化和显示: NSOpenPanel* dialog = [NSOpenPanel openPanel]; [dialog setAllowedFileTypes:allowedFileTypes]; [dialog setAccessoryView:openPanelAccessoryView]; openPane
NSOpenPanel
。附件视图很简单-它是一个复选框,当选中时,允许用户选择任何文件;取消选中时,要求文件位于支持的扩展名列表中
NSOpenPanel
初始化和显示:
NSOpenPanel* dialog = [NSOpenPanel openPanel];
[dialog setAllowedFileTypes:allowedFileTypes];
[dialog setAccessoryView:openPanelAccessoryView];
openPanel = dialog;
[dialog beginSheetModalForWindow:[self activeWindow]
completionHandler:^(NSInteger result)
{
...
}];
iAction
复选框:
- (void)openUnrecognizedFiles:(id)sender
{
if ([sender state])
[openPanel setAllowedFileTypes:nil];
else
[openPanel setAllowedFileTypes:@[@"dsk"]];
}
根据,可以在显示面板时使用setAllowedFileTypes
:
可以在面板运行时更改允许的文件类型(对于
例如,从附件视图)
然而,这似乎并没有像预期的那样工作:当前视图不会重新加载-当您滚动时,更向下的文件会根据新设置的需要被启用/禁用;但是,最初可见的文件不受影响
当用户切换附件视图复选框时,我需要一些方法来刷新当前目录的内容-但是,我似乎找不到任何方法来做到这一点。有什么建议吗
编辑,2013年10月15日:这似乎是由Mavericks中的一个bug引起的,而不是其他任何东西。在Mountain Lion上运行的同一代码没有任何问题,正如这里的两位评论员所指出的那样。我已经尝试过这样做,并且成功了:
NSOpenPanel* dialog = [NSOpenPanel openPanel];
[dialog setAllowedFileTypes:[NSArray arrayWithObject:@"png"]];
NSButton *openPanelAccessoryView = [[[NSButton alloc] initWithFrame:NSMakeRect(0.0, 0.0, 324.0, 22.0)] autorelease];
[openPanelAccessoryView setButtonType:NSSwitchButton];
[openPanelAccessoryView setBezelStyle:0];
[openPanelAccessoryView setAction:@selector(openUnrecognizedFiles:)];
[openPanelAccessoryView setTarget:self];
[dialog setAccessoryView:openPanelAccessoryView];
openPanel = dialog;
[dialog beginSheetModalForWindow:[[self view] window] completionHandler:^(NSInteger result){
if(result == NSFileHandlingPanelOKButton)
{
}
} ];
这与您的操作相同:
- (void)openUnrecognizedFiles:(id)sender
{
if ([sender state])
[openPanel setAllowedFileTypes:nil];
else
[openPanel setAllowedFileTypes:[NSArray arrayWithObject:@"jpeg"]];
}
现在,文件类型正在根据复选框的打开和关闭进行更改。您不能使用
setAllowedFileTypes:
方法隐藏文件。此方法将仅启用/禁用“打开”面板中的文件
从NSSavePanel.h
此属性将确定应在打开状态下启用哪些文件
面板
我对隐藏文件不感兴趣;我对启用/禁用它们感兴趣。(s)他希望在显示面板时启用/禁用文件。显示面板时,设置allowedFileTypes没有直接的明显效果。tableview必须重新加载其数据。所以不,它不起作用。仅当在显示面板之前设置AllowedFileType时,它才起作用。在我的案例中,文件类型也会更改。当您选中/取消选中该框时,文件是否变为启用/禁用?这就是问题所在-当我切换复选框时,视图不会更新。仔细想想,不要紧-我看到的可能是由于Mavericks GM中的错误(请参见编辑我的问题)。