1

setting.bundle のトグル スイッチの状態に基づいて、アプリの mainView を変更しようとしています。私が設定したデフォルトは NO に設定します。しかし、何かが足りないようです。コードでビューを変更できるように見える唯一の方法は、デフォルト値を変更することです。これは、applicationDidFinishLaunchingWithOptions の delegate.m ファイルで行っています。どんな助けでも素晴らしいでしょう!

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

//Registers the defaults.
NSUserDefaults *metricDefaults = [NSUserDefaults standardUserDefaults];
[metricDefaults registerDefaults:[NSDictionary dictionaryWithObject:[NSNumber numberWithBool:NO] forKey:@"metric_preferences"]];
BOOL metricDisabled = [metricDefaults boolForKey:@"metric_preference"];
[metricDefaults synchronize];

//Change MainView based on Metric setting.
if (metricDisabled) {

    //Standard View.
    MainViewController *aController = [[MainViewController alloc] initWithNibName:@"MainView" bundle:nil];
    self.mainViewController = aController;
    [aController release];

    mainViewController.view.frame = [UIScreen mainScreen].applicationFrame;
    [window addSubview:[mainViewController view]];
    [window makeKeyAndVisible];

    return YES;

} else {

    //Metric View.
    MainViewController *aController = [[MainViewController alloc] initWithNibName:@"MainViewMetric" bundle:nil];
    self.mainViewController = aController;
    [aController release];

    mainViewController.view.frame = [UIScreen mainScreen].applicationFrame;
    [window addSubview:[mainViewController view]];
    [window makeKeyAndVisible];

    return YES;
}

}
4

1 に答える 1

2

registerDefaults: を使用して、このキーのデフォルトを NO に設定する必要があります。これにより、ユーザーが設定したことがない場合はユーザーのデフォルトに値が与えられますが、ユーザーが変更した後の値には影響しません。あなたがやっている方法では、常にユーザーのデフォルト値を NO に設定します。

編集後:

これはあなたがそれを行う方法です:

NSUserDefaults *metricDefaults = [NSUserDefaults standardUserDefaults];
    [metricDefaults registerDefaults:[NSDictionary dictionaryWithObject:[NSNumber numberWithBool:NO] forKey:@"metric_preferences"]];
    BOOL metricDisabled = [metricDefaults boolForKey:@"metric_preference"];
    [metricDefaults synchronize];
于 2012-05-29T04:56:44.103 に答える