Search code examples
objective-cxcodecocoaopenfiledialog

How do I create an open file dialog in a xcode cocoa project?


I'm looking for an equivalent to GetOpenFileName function for Windows.


Solution

  • Standard Cocoa class for Open File UI is NSOpenPanel

    Example code:

    //this gives you a copy of an open file dialogue
    NSOpenPanel* openPanel = [NSOpenPanel openPanel];
    
    //set the title of the dialogue window
    openPanel.title = @"Choose a .PED texture file";
    
    //shoud the user be able to resize the window?
    openPanel.showsResizeIndicator = YES;
    
    //should the user see hidden files (for user apps - usually no)
    openPanel.showsHiddenFiles = NO;
    
    //can the user select a directory?
    openPanel.canChooseDirectories = NO;
    
    //can the user create directories while using the dialogue?
    openPanel.canCreateDirectories = YES;
    
    //should the user be able to select multiple files?
    openPanel.allowsMultipleSelection = NO;
    
    //an array of file extensions to filter the file list
    openPanel.allowedFileTypes = @[@"ped"];
    
    //this launches the dialogue
    [openPanel beginSheetModalForWindow:appDelegate.controlsWindow
                    completionHandler:^(NSInteger result) {
    
                        //if the result is NSOKButton
                        //the user selected a file
                        if (result==NSOKButton) {
    
                            //get the selected file URLs
                            NSURL *selection = openPanel.URLs[0];
    
                            //finally store the selected file path as a string
                            NSString* path = [[selection path] stringByResolvingSymlinksInPath];
    
                            //here add yuor own code to open the file
    
                        }
    
                    }];