Re: Preferences in a separate nib file
Re: Preferences in a separate nib file
- Subject: Re: Preferences in a separate nib file
- From: Olivier Destrebecq <email@hidden>
- Date: Sun, 6 Nov 2005 20:00:28 -0500
You can also look at Camino.
basically they have a controller, that is present in the main nib
file and respond to the showPreference method. This method in turns
load all the preference bundles, which are each subclass of
NSPreferencesPane and are contained in their own nib file.
The name of the controller is MVPreferencesController. It is also
used bu various other projects around the web.
http://www.caminobrowser.org/development/dev_build.html
Olivier Destrebecq
http://otusweb.spymac.com/portfolio/
On Nov 6, 2005, at 4:00 AM, Conor Dearden wrote:
What Cameron said is correct; there does not exist a no code way.
He is
actually allocating a custom class and never loads a nib. It's the
same
setup Cameron mentioned but the class method to load the nib is
"[NSBundle
loadNibNamed:owner:"
- (IBAction)showPreferences:(id)sender {
if (preferencesObject == nil) {
preferencesObject= [[MyPreferences alloc] init];
if (![NSBundle loadNibNamed:@"PreferencesPanel.nib"
owner:preferencesObject] ) {
NSLog(@"Load of PreferencesPanel.nib Failed");
return;
}
}
[[preferencesObject window] makeKeyAndOrderFront: self];
}
As you can see I also load a custom object but then load it as the
owner of
a new nib. If you don't mind the object who has method
"showPreferences:"
(typically some kind of central controller) being the owner you can
do:
- (IBAction)showPreferences:(id)sender {
if (preferencesWindow == nil) {
if (![NSBundle loadNibNamed:@"PreferencesPanel.nib"
owner:self] ) {
NSLog(@"Load of PreferencesPanel.nib Failed");
return;
}
}
[preferencesWindow makeKeyAndOrderFront: self];
}
Whatever class you pass as owner remember to set it as the class of
the file
owner in the nib file and connect your outlets like preferenceWindow.
Conor Dearden
http://www.bruji.com/
In particular, the example directly connects the Preferences menu
item to the makeKeyAndOrderFront: action of the preference window.
So how would I do that if the main menu and preference panel are in
separate nib files? Is there a "no code" way to do this, or is the
price of a separate nib having to write some code to connect things
up?
I think you need some code to hook it up to your main controller.
For example, here is what I have in the main controller of my
document-based app that has a preferences window in a separate nib
that is loaded by its own preferences controller.
- (IBAction)showPreferences:(id)sender
{
NSLog(@"IsingController.showPreferences");
if (preferencesCtl == nil)
{
preferencesCtl = [[IsingPreferencesCtl alloc] init];
}
[[preferencesCtl window] makeKeyAndOrderFront: self];
}
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden