0

徹底的な調査を行いましたが、探している答えが見つからないようです。誰かが助けてくれることを願っています。

アプリに複数のビュー コントローラーがあります。そのうちの 1 つは、ユーザーがセグメント化されたコントロールを介して背景色などの特定の設定を変更できる「オプション」ビューです。クリックすると、ユーザーはボタンをクリックして、好みの色を NSUserDefaults に保存します。これは完全に機能し、次にアプリを開いたときにも正しい色が選択されています. ただし、オプションビューコントローラーのみ。

この選択した背景色を他のビュー コントローラーに読み込むにはどうすればよいですか? オプションビューで行ったように、他のビューのViewDidLoadに実装しても実行されないようです(以下を参照)。

options.m の私のコードは次のとおりです。

- (IBAction)changeColor {
    switch (colorControl.selectedSegmentIndex) {
        case 0:
            [colorView setBackgroundColor:[UIColor redColor]];
            break;
        case 1:
            [colorView setBackgroundColor:[UIColor blackColor]];
            break;
        case 2:
            [colorView setBackgroundColor:[UIColor brownColor]];
            break;  
        default:
            break;
    }
}

- (IBAction)saveDefaultColor {
    int defaultColorInteger = colorControl.selectedSegmentIndex;

    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    [userDefaults setInteger:defaultColorInteger forKey:@"defaultColor"];
    [userDefaults synchronize];
 }

上記はコントロールと保存ボタンです。私の ViewDidLoad には、次のものを含めました。

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
int defaultColorInteger = [userDefaults integerForKey:@"defaultColor"];

[colorControl setSelectedSegmentIndex:defaultColorInteger];

switch (colorControl.selectedSegmentIndex) {
    case 0:
        [colorView setBackgroundColor:[UIColor redColor]];
        break;
    case 1:
        [colorView setBackgroundColor:[UIColor blackColor]];
        break;
    case 2:
        [colorView setBackgroundColor:[UIColor brownColor]];
        break;

    default:
        break;

これは私が望むとおりに機能しますが、他のビューでは機能しません。私が欠けているように見えるものについて誰かが私を助けることができますか? どうもありがとう

4

2 に答える 2

0

ViewController のいずれかで NSUserDefault オブジェクトを作成し、キーと値のペアを userDefault オブジェクトのオブジェクトとして設定します。

NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
    if (standardUserDefaults)
    {
        [standardUserDefaults setObject:@"stringUserName" forKey:@"UserName"];
        [standardUserDefaults setObject:@"idfv" forKey:@"DeviceCode"];
        [standardUserDefaults synchronize];
    }

次に、2 番目の ViewController からアクセスするには、2 番目の ViewController に以下のコードを記述する必要があります。

NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
    NSString *userName;
    NSString *deviceCode;
    if (standardUserDefaults) 
    {
        userName = (NSString*)[standardUserDefaults objectForKey:@"UserName"];
        deviceCode = (NSString*)[standardUserDefaults objectForKey:@"DeviceCode"];
    }

これがお役に立てば幸いです。

于 2014-05-06T13:30:30.450 に答える