Cocoa NSOpenPanel-设置文件类型?

Cocoa NSOpenPanel-设置文件类型?,cocoa,Cocoa,只是看看我将使用什么只允许选择特定的文件(现在的图像) NSArray * fileTypes = [NSArray arrayWithObjects:@"png",@"jpg",@"tiff",nil]; [openDlg setAllowedFileTypes:fileTypes]; setFileTypesArray返回 NSArray * fileTypes = [NSArray arrayWithObjects:@"png",@"jpg",@"tiff",ni

只是看看我将使用什么只允许选择特定的文件(现在的图像)

 NSArray  * fileTypes = [NSArray arrayWithObjects:@"png",@"jpg",@"tiff",nil];

[openDlg setAllowedFileTypes:fileTypes];       
setFileTypesArray
返回

 NSArray  * fileTypes = [NSArray arrayWithObjects:@"png",@"jpg",@"tiff",nil];

[openDlg setAllowedFileTypes:fileTypes];       
NSOpenPanel可能不响应-setFileTypesArray:

 NSArray  * fileTypes = [NSArray arrayWithObjects:@"png",@"jpg",@"tiff",nil];

[openDlg setAllowedFileTypes:fileTypes];       
然后面板根本就没有打开。这是我的密码:

    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];
 NSArray  * fileTypes = [NSArray arrayWithObjects:@"png",@"jpg",@"tiff",nil];

[openDlg setAllowedFileTypes:fileTypes];       

谢谢。

如何
[openDlg setAllowedFileTypes:fileTypes]

您要查找的方法是
setAllowedFileTypes
——请参阅父类的文档。

您要从NSSaveOpenPanel的委托中查找委托方法

-(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;
}
 NSArray  * fileTypes = [NSArray arrayWithObjects:@"png",@"jpg",@"tiff",nil];

[openDlg setAllowedFileTypes:fileTypes];       
-(BOOL)面板:(id)发送方应显示文件名:(NSString*)文件名
{
NSString*ext=[文件名路径扩展];
如果(ext=@“| | ext==@”/“| | ext==nil | | ext==NULL | |[ext length]<1){
返回TRUE;
}
NSLog(@“Ext:'%@'”,Ext);
N分子*tagEnumerator=[[NSArray arrayWithObjects:@“png”、“tiff”、“jpg”、“gif”、“jpeg”、“nil]对象枚举器];
NSString*allowedExt;
while((AllowedText=[tagEnumerator nextObject]))
{
if([ext caseInsensitiveCompare:allowedExt]==SensorDeredName)
{
返回TRUE;
}
}
返回FALSE;
}

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

您可能想签出

[panel setAllowedFileTypes:[NSImage imageTypes]];
 NSArray  * fileTypes = [NSArray arrayWithObjects:@"png",@"jpg",@"tiff",nil];

[openDlg setAllowedFileTypes:fileTypes];       
或者实现委托NSOpenSavePanelDelegate

 NSArray  * fileTypes = [NSArray arrayWithObjects:@"png",@"jpg",@"tiff",nil];

[openDlg setAllowedFileTypes:fileTypes];       
实施

- (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]];

}
 NSArray  * fileTypes = [NSArray arrayWithObjects:@"png",@"jpg",@"tiff",nil];

[openDlg setAllowedFileTypes:fileTypes];       

这确实对我有用:

 NSArray  * fileTypes = [NSArray arrayWithObjects:@"png",@"jpg",@"tiff",nil];

[openDlg setAllowedFileTypes:fileTypes];       

我给osx/swift 5的2美分 (您可以指定标题,并将其带到“图片”文件夹

 NSArray  * fileTypes = [NSArray arrayWithObjects:@"png",@"jpg",@"tiff",nil];

[openDlg setAllowedFileTypes:fileTypes];       

这是迄今为止最好的按文件类型筛选的方法此属性从macOS Big Sur开始已被弃用,有人知道推荐的替换方法吗?注意:在10.10中,
[NSImage imageFileTypes]
已被弃用,首选方法现在是
[NSImage imageTypes]