首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSOpenPanel -设置文件类型?

NSOpenPanel -设置文件类型?
EN

Stack Overflow用户
提问于 2010-11-27 01:01:10
回答 6查看 9.2K关注 0票数 10

看看我只允许选择特定文件的内容(目前的图片)。

setFileTypesArray返回

NSOpenPanel可能不会响应-setFileTypesArray:

然后面板就一点也开不开。这是我的代码:

代码语言:javascript
复制
    NSArray  * fileTypes = [NSArray arrayWithObjects:@"png",@"tiff",@"baz",nil];

NSLog(@"Button Pressed");
[textField setStringValue:@"Test"];
int i; // Loop counter.

NSOpenPanel* openDlg = [NSOpenPanel openPanel];

[openDlg setCanChooseFiles:YES];
[openDlg setFileTypesArray:fileTypes];

谢谢。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-11-27 01:49:36

您正在从NSSaveOpenPanel的委托中寻找委托方法

代码语言:javascript
复制
-(BOOL)panel:(id)sender shouldShowFilename:(NSString *)filename
{
        NSString* ext = [filename pathExtension];
        if (ext == @"" || ext == @"/" || ext == nil || ext == NULL || [ext length] < 1) {
                return TRUE;
        }

        NSLog(@"Ext: '%@'", ext);

        NSEnumerator* tagEnumerator = [[NSArray arrayWithObjects:@"png", @"tiff", @"jpg", @"gif", @"jpeg", nil] objectEnumerator];
        NSString* allowedExt;
        while ((allowedExt = [tagEnumerator nextObject]))
        {
                if ([ext caseInsensitiveCompare:allowedExt] == NSOrderedSame)
                {
                        return TRUE;
                }
        }

        return FALSE;
}

然后,将面板的委托设置为"self",或者在上面定义此方法的任何地方。

票数 13
EN

Stack Overflow用户

发布于 2010-11-27 01:15:04

[openDlg setAllowedFileTypes:fileTypes];怎么样?

票数 29
EN

Stack Overflow用户

发布于 2013-10-17 10:23:03

你可以去退房

代码语言:javascript
复制
[panel setAllowedFileTypes:[NSImage imageTypes]];

或实现委托NSOpenSavePanelDelegate。

和实施

代码语言:javascript
复制
- (BOOL)panel:(id)sender shouldEnableURL:(NSURL *)url {

    NSString * fileExtension = [url pathExtension];
    if (([fileExtension  isEqual: @""]) || ([fileExtension  isEqual: @"/"]) || (fileExtension == nil)) {
        return YES;
    }

    NSSet * allowed = [NSSet setWithArray:@[@"png", @"tiff", @"jpg", @"gif", @"jpeg"]];
    return [allowed containsObject:[fileExtension lowercaseString]];

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

https://stackoverflow.com/questions/4289511

复制
相关文章

相似问题

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