2012-05-04 2 views
0

UIPopoverControllerでUISwitchが取得されており、Popover VCを開いたときのデフォルト設定はONです。私はあなたがそれを "OFF"にしてUIPopoverを閉じると、ポップオーバーを再び開いたときにUISwitchの状態が変わらないようにしようとしています。私の人生のために、私はこれを理解することができず、本当にシンプルなものだと賭けています。誰かが私を正しい方向に向けることができるかもしれないと思っていましたか?どんな助けでも本当にありがとう!UIPopoverを解除するときにUISwitchがOFF状態を維持しない

[EDIT]これは、私が働いているコードです:

//--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に呼びかけそれは、このボイド関数を実行して:

- (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]上記のコードを私が追加したものに編集しました。どの作品!あなたの再アロケーションあなたはコントローラたびにそれで

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

、(ONデフォルトで)初期セットアップでそれを初期化:

+0

答えは簡単です:あなたのポップオーバーを閉じるときに状態を保存し、それを開いたときに変更します。 しかし、いくつかのコードを投稿する必要があります。あなたに合った答えがあなたのコードに依存するからです。 –

+0

ありがとう、私はコードを含めるために私の最初の投稿を編集しました。 – Ollie177

答えて

1

私が見る最初のコード行です。

あなたはこのソリューションを持っている:

  1. は、あなたがそれを初期化後は、あなたが使用することができますpopovercontroller
  2. を却下する前に、あなたのUISwitchの状態を保存する「popoverState」
  3. のように呼ばれるクラスでBOOLを作成スイッチの状態を設定する新しい変数

私に今すぐそれを聞かせてください!

+0

おかげで、私はそれを試してみましょう、あなたにお知らせください! – Ollie177

+0

私はそれが働いていると思う、あなたの助けのためにthats。私はあなたが言ったことを行って、NSUserDefaultsを調べることになったので、上記の新しいコードを投稿します。それはうまくいかない場合は私に知らせるが、それ以外の場合は、あなたが与えた解決策は、本当に役立つことを見ることができます! – Ollie177

関連する問題