2016-04-04 2 views
0

これは以前に尋ねられたことは知っていますが、私はまだこれに対する解決策を見つけていません。私はUISwitch状態を保存しようとしているので、どのVCに入力してもスイッチ状態はまだ有効です。しかし、スイッチが入っているVCを離れるときはいつでも、それはオフのリゾートです。現在、これは私がスイッチの状態を保存するために使用しているコードです:UISwitchの状態を保存する - 目的C

- (IBAction)tvpSwitch:(UISwitch *)sender { 
    if (sender.isOn) { 
    [[NSUserDefaults standardUserDefaults]setObject:@"on" forKey:@"tvpSwitch"]; 
    [[NSUserDefaults standardUserDefaults]synchronize]; 


} 
else { 
    [[NSUserDefaults standardUserDefaults]setObject:@"off" forKey:@"tvpSwitch"]; 
    [[NSUserDefaults standardUserDefaults]synchronize]; 
}} 

私は、これは任意のVC viewWillAppearで置く:

-(void)viewWillAppear:(BOOL)animated 
{ 
if ([[[NSUserDefaults standardUserDefaults]valueForKey:@"tvpSwitch"]isEqualToString:@"on"]) 
{ 
     (sender.isOn=YES); 
} 
else 
{ 
     (sender.isOn=NO); 
}} 

また、読み込みviewWillAppearメソッドのフラグ:「を使用し私は通常、リファレンスガイドを使用しようとしていますが、どこが間違っているのかを特定することは困難です。どんな助けも素晴らしいだろう!ありがとう!

+1

どのようにあなたが 'UISwitch'を作成していますか?あなたの 'sender'はどこにあるのでしょうか?(self.nameOfTheSwitchのような)スイッチへの参照を作成する必要があります。 –

答えて

0

IBActionと同じように、UISwitchトラフInterface Builderを作成したとします。その場合はIBOutletUISwitchから作成し、それを常に参照してください。

0

最初のコードスニペットsenderは、IBActionメソッドで渡されるパラメータであり、UISwitchへの参照です。

他のビューコントローラでは、UISwitchを参照する必要がありますが、UIで変更することなくその状態を確認したい場合は、NSUserDefaultsから取得して使用してください。

ところでBOOLタイプを保存するために指定された方法はNSUserDefaultsです。

- (IBAction)tvpSwitch:(UISwitch *)sender { 
    [[NSUserDefaults standardUserDefaults] setBool:sender.isOn forKey:@"tvpSwitch"]; 
} 

BOOL switchState; 

-(void)viewWillAppear:(BOOL)animated 
{ 
    switchState = [[NSUserDefaults standardUserDefaults] boolForKey:@"tvpSwitch"]; 
    // do something with switchState 
} 
+0

私はあなたのコードを試しています。私が残っている問題は、それがオン状態にあるものとしてしか読まないということです。目標は、状態が変化したときにユーザーのデフォルトに保存し、その状態を思い出すことができるようにすることです。上記のコードでif文をいくつか試してみましたが、解決策がまだ見つかりませんでした。これのアイデアはありますか?私もあなたの答えを誤解した場合、私は謝罪します。 –

関連する問題