How to create an Open File dialogue with NSOpenPanel

- by

NSOpenPanel is surprisingly easy to use: create the panel, call the openPanel method, and handle the returned URL object in a block.

In this example we invoke the panel from a button in the main window, then display the returned URL in a textLabel:

- (IBAction)loadFile:(id)sender {
    
    // create an open documet panel
    NSOpenPanel *panel = [NSOpenPanel openPanel];
    
    // display the panel
    [panel beginWithCompletionHandler:^(NSInteger result) {
        if (result == NSFileHandlingPanelOKButton) {
            
            // grab a reference to what has been selected
            NSURL *theDocument = [[panel URLs]objectAtIndex:0];
            
            // write our file name to a label
            NSString *theString = [NSString stringWithFormat:@"%@", theDocument];
            self.textLabel.stringValue = theString;
            
        }
    }];
    
}

Further Reading

Apple’s NSOpenPanel Class reference:



If you enjoy my content, please consider supporting me on Ko-fi. In return you can browse this whole site without any pesky ads! More details here.

Leave a Comment!

This site uses Akismet to reduce spam. Learn how your comment data is processed.