I am writing an application in Cocoa which allows the user to export data in 3 different formats: CSV, JSON, and XML. I have added the allowed extensions to an NSSavePanel:
NSSavePanel* saveFile = [NSSavePanel savePanel];
NSArray* extensions = [[NSArray alloc] initWithObjects:@"csv", @"json" @"xml", nil];
[saveFile setAllowedFileTypes:extensions];
However, how can I set up the NSSavePanel to allow the user to select which format to save in, such as in TextEdit where a "File format" list box is offered? If this is possible, how would I then determine which format had been selected?
The panel includes UI for browsing the file system, selecting a directory, and specifying the new name for the file. You can also add custom UI for your app using an accessory view. An NSSavePanel object reports user interactions to its associated delegate object, which must adopt the NSOpenSavePanelDelegate protocol.
The Save panel provides an interface for specifying the location to save a file and the name of that file. You present this panel when the user attempts to save a new document, or when the user saves a copy of an existing document to a new location.
An NSSavePanel object reports user interactions to its associated delegate object, which must adopt the NSOpenSavePanelDelegate protocol. Use your delegate object to validate the user's selection and respond to user interactions with the panel.
You can also add custom UI for your app using an accessory view. An NSSavePanel object reports user interactions to its associated delegate object, which must adopt the NSOpenSavePanelDelegate protocol. Use your delegate object to validate the user's selection and respond to user interactions with the panel.
You can add a user-defined NSView
to the NSSavePanel
using setAccessoryView:
, see Apple's docs. There is also an Apple sample Custom Save. You add your format selection controls to this accessory view.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With