首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSOpenPanel setAllowedFileTypes

NSOpenPanel setAllowedFileTypes
EN

Stack Overflow用户
提问于 2010-11-28 06:06:12
回答 2查看 12.7K关注 0票数 15

我有一台NSOpenPanel。但我想让它只有PDF文件可选。我在找这样的东西:

代码语言:javascript
复制
// NOT WORKING 
NSOpenPanel *panel;

panel = [NSOpenPanel openPanel];
[panel setFloatingPanel:YES];
[panel setCanChooseDirectories:YES];
[panel setCanChooseFiles:YES];
[panel setAllowsMultipleSelection:YES];
[panel setAllowedFileTypes:[NSArray arrayWithObject:@"pdf"]];
int i = [panel runModalForTypes:nil];
if(i == NSOKButton){
    return [panel filenames];
}

我希望有人能有个解决方案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-28 06:24:26

我注意到几件事..将setCanChooseDirectories更改为NO。启用时,这表示文件夹是有效输入。这很可能不是你想要的功能。对于区分大小写的系统,您可能还希望将允许的文件类型更改为[NSArray arrayWithObject:@"pdf", @"PDF", nil]runModalForTypes应该是文件类型的数组。将代码更改为如下所示:

代码语言:javascript
复制
// WORKING :)
NSOpenPanel *panel;
NSArray* fileTypes = [NSArray arrayWithObjects:@"pdf", @"PDF", nil];
panel = [NSOpenPanel openPanel];
[panel setFloatingPanel:YES];
[panel setCanChooseDirectories:NO];
[panel setCanChooseFiles:YES];
[panel setAllowsMultipleSelection:YES];
[panel setAllowedFileTypes:fileTypes];
int i = [panel runModal];
if(i == NSOKButton){
    return [panel URLs];
}

Swift 4.2:

代码语言:javascript
复制
let fileTypes = ["jpg", "png", "jpeg"]
let panel = NSOpenPanel()
panel.canChooseFiles = true
panel.canChooseDirectories = false
panel.allowsMultipleSelection = false
panel.allowedFileTypes = fileTypes
panel.beginSheetModal(for: window) { (result) in
    if result.rawValue == NSApplication.ModalResponse.OK.rawValue {
         // Do something with the result.
         let selectedFolder = panel.urls[0]
         print(selectedFolder)
    }
}
票数 33
EN

Stack Overflow用户

发布于 2010-11-28 06:24:57

你离答案很近了。

首先,去掉[panel setCanChooseDirectories:YES],这样它就不会允许目录了。

然后,或者将[panel runModalForTypes:nil]更改为[panel runModal],或者取消对[panel setAllowedFileTypes:]的调用,而将数组传递给[panel runModalForTypes:]

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4294168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档