Juste regarder ce que j'utiliserais uniquement pour permettre la sélection des fichiers spécifiques (images pour l'instant)
Nsopenpanel peut ne pas répondre à -SeFileTypeSareray: P>
blockQuote> puis le panneau ne s'ouvre pas du tout. Heres mon code: p> merci. P> p> setFileTypeSARray code> retourne p>
6 Réponses :
Que diriez-vous de [OPENDLG SIALLONDFILETYPES: FileTypes]; CODE>? P>
Ceci est de loin la meilleure méthode pour filtrer par types de fichiers
Cette propriété est obsolète à partir de Macos Big Sur, est-ce que quelqu'un connaît-il d'un remplaçant recommandé?
La méthode que vous recherchez est SetowedFileTypes Code> - Voir les docs pour la classe mère, NssavePanel . P>
Vous recherchez une méthode de déléguée du délégué de 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;
}
Vous pouvez utiliser pour vérifier ou mettre en œuvre le délégué nsopensavepaneldelegate p> et implémenter p>
Remarque: dans 10.10 [NSImage ImageFileTypes] Code> a été obsolète et la méthode préférée est maintenant [NSImage ImageyTypes] Code>
Cela fonctionnait pour moi:
Mes deux cents pour OSX / SWIFT 5 (Vous pouvez spécifier le titre et apporter au dossier "Images".
override func showChooseImageDialog(title: String){
let openPanel = NSOpenPanel()
openPanel.canChooseFiles = false
openPanel.allowsMultipleSelection = false
openPanel.canChooseDirectories = false
openPanel.canCreateDirectories = false
openPanel.title = title
openPanel.allowedFileTypes = NSImage.imageTypes
openPanel.directoryURL = URL(fileURLWithPath: picturesDir() )
openPanel.beginSheetModal(for:self.view.window!) { (response) in
if response == .OK {
let selectedPath = openPanel.url!.path
// do whatever you what with the file path
}
openPanel.close()
}
}