Re: Preferences in a separate nib file
Re: Preferences in a separate nib file
- Subject: Re: Preferences in a separate nib file
- From: Conor Dearden <email@hidden>
- Date: Sun, 06 Nov 2005 10:00:58 +0100
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