0

UIPopoverControllerにUISwitchがあり、ポップオーバーVCを開くとデフォルト設定がオンになっています。「OFF」に設定してUIPopoverを閉じたときに、ポップオーバーを再度開いたときにUISwitchの状態が同じになるようにしようとしています。私の人生では、これを理解することはできませんし、それは本当に単純なことだと思います。誰かが私を正しい方向に向けることができるのではないかと思っていましたか?どんな助けでも本当に感謝します!

[編集]これは私が使用しているコードです:

  //--NEW CODE--//
#define SWITCH_KEY_STATE @"Save UISwitch State"

- (IBAction)settingsPopover:(id)sender {
    if(![pop isPopoverVisible]){
        settings = [[settingsView alloc] initWithNibName:@"settingsView" bundle:nil];
        settings.setDelegate = self;
        pop = [[UIPopoverController alloc] initWithContentViewController:settings];
        [pop setPopoverContentSize:CGSizeMake(200, 100)];
        [pop presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
        //--NEW CODE--//
        popoverState = [NSUserDefaults standardUserDefaults];
        self.settings.hintSwitch.on = [popoverState boolForKey:SWITCH_KEY_STATE];

        [self.settings.hintSwitch addTarget:self action:@selector(onOff:) forControlEvents:UIControlEventValueChanged];
    } else {
        [pop dismissPopoverAnimated:YES];
    }
}

これは、ポップオーバーを作成する関数です。これは[self.settings.hintSwitch...、UISwitchを呼び出すポップオーバー(設定)であり、UISwitchと対話すると、次のvoid関数を実行します。

- (void)onOff:(id)sender {
    if (settings.hintSwitch.on) {
        tutView.hidden = NO;
    } else {
        tutView.hidden = YES;
    //--NEW CODE--//
    popoverState = [NSUserDefaults standardUserDefaults];
    [popoverState setBool:self.settings.hintSwitch.on forKey:SWITCH_KEY_STATE];
        }
    }

ポップオーバーを閉じて再度開くと、UISwitchが「ON」にリセットされます。

[EDIT2]上記のコードを追加したものに編集しました。これでうまくいきます!

4

1 に答える 1

1

最初に目にするのは、次のコード行です。

pop = [[UIPopoverController alloc] initWithContentViewController:settings];

これを使用すると、コントローラーを使用するたびに再割り当てし、初期設定で初期化します (デフォルトではオン)。

あなたはこの解決策を持っています:

  1. 「popoverState」のようなクラスでBOOLを作成します
  2. popovercontroller を閉じる前に UISwitch の状態を保存します
  3. 初期化したら、新しい変数を使用してスイッチの状態を設定できます

今私をさせてください!

于 2012-05-07T07:36:47.783 に答える