• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Preferences in a separate nib file
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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
References: 
 >Re: Preferences in a separate nib file (From: Conor Dearden <email@hidden>)

  • Prev by Date: Re: Stack unwinding with Objective C++
  • Next by Date: Re: how to add multiple-selection pull-down menu in IB?
  • Previous by thread: Re: Preferences in a separate nib file
  • Next by thread: Re: Preferences in a separate nib file
  • Index(es):
    • Date
    • Thread