Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MASPreferences choose view

I am using MASPreferences in my app, I was able to set up everything correctly, with 3 different views (preferences, login and about).What I would like to do is to choose which panel gets shown when the window is opened. This is so that when the user clicks on about, the about panel is shown, etc. instead of the last panel shown being the one displayed. As of now I have tried modifying the entry in the plist file, but it does not seem to work. Is there any other way?

like image 304
ruben1691 Avatar asked Nov 17 '25 18:11

ruben1691


1 Answers

So after a bit of trying, and by using @Jasper's answer, I came up with the following:

-(void)openPreferencesWindowWithIdentifier:(NSString *)identifier {
    [NSApp activateIgnoringOtherApps:YES];
    [[NSUserDefaults standardUserDefaults] setValue:identifier forKey:@"MASPreferences Selected Identifier View"];

    // Create the preferences window
    NSViewController *generalViewController = [[GeneralPreferencesViewController alloc]initWithNibName:@"GeneralPreferencesViewController" bundle:nil];
    NSViewController *loginViewController = [[PushoverLoginViewController alloc]initWithNibName:@"PushoverLoginViewController" bundle:nil];
    NSViewController *aboutViewController = [[AboutPreferencesViewController alloc]initWithNibName:@"AboutPreferencesViewController" bundle:nil];
    NSArray *controllers = [[NSArray alloc]initWithObjects:generalViewController,loginViewController,[NSNull null],aboutViewController, nil];
    NSString *windowTitle = NSLocalizedString(@"Preferences", @"Comon title for preferences window");
    _preferencesWindowController = [[MASPreferencesWindowController alloc]initWithViewControllers:controllers title:windowTitle];

    [self.preferencesWindowController showWindow:nil];
}

Essentially this method writes the required "tab" on the plist file, and then initalizes a new instance everytime. By doing so, the correct view is loaded. The identifier parameter is the one you set up for each of the views. Thanks again to Jasper for his answer, really helped me understand how to figure this one out!

like image 63
ruben1691 Avatar answered Nov 19 '25 10:11

ruben1691



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!