9
votes

Nsopenpanel - Définir le type de fichier?

Juste regarder ce que j'utiliserais uniquement pour permettre la sélection des fichiers spécifiques (images pour l'instant)

setFileTypeSARray retourne

Nsopenpanel peut ne pas répondre à -SeFileTypeSareray:

puis le panneau ne s'ouvre pas du tout. Heres mon code: xxx

merci.


0 commentaires

6 Réponses :


29
votes

Que diriez-vous de [OPENDLG SIALLONDFILETYPES: FileTypes]; ?


2 commentaires

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é?



8
votes

La méthode que vous recherchez est SetowedFileTypes - Voir les docs pour la classe mère, NssavePanel .


0 commentaires

13
votes

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;
}


0 commentaires

11
votes

Vous pouvez utiliser pour vérifier xxx

ou mettre en œuvre le délégué nsopensavepaneldelegate

et implémenter xxx


1 commentaires

Remarque: dans 10.10 [NSImage ImageFileTypes] a été obsolète et la méthode préférée est maintenant [NSImage ImageyTypes]



2
votes

Cela fonctionnait pour moi: xxx


0 commentaires

1
votes

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


0 commentaires