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() } }