How to create an Open File dialogue with NSOpenPanel

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:

Leave a Reply