0

NSUserDefaults クラスを使用して、一連のテキスト ラベル情報を保持しようとしています。具体的には、ボタンとラベルのあるビューがあります。ボタンをクリックすると、ユーザーは「モーダル」接続を使用して別のビューに移動します。この 2 番目のビューでは、ユーザーはスライダーを使用して値を設定します。「モーダル」接続を使用して、単一のボタンをクリックすると最初のビューに戻ります。ユーザーが2番目のビューでスライダーを使用してボタンをクリックすると、最初のビューのテキストラベルがスライダーの値に更新されるように、コードを挿入したいと思います。

これは、2 番目のビューのボタン メソッドの下に配置したコードです。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"myValue" forKey@"myKey"];
[defaults synchronize];
_textLabelOnFirstView.text = [defaults stringForKey:@"myKey"];

また、「viewDidLoad」メソッドの下の同じビュー コントローラーに対して、次のコードを配置します。

NSUserDefaults *defaults = [NsUserDefaults standardUserDefaults];
_textLabelOnFirstView.text = [defaults stringsForKey:@myKey"];

ただし、次のようになります。最初のビューを開いた後、ボタンをクリックして 2 番目のビューに移動します。2 番目のビューでは、スライダーを 100 にスライドしてから、ボタンをクリックします。ボタンをクリックすると最初のビューに戻りますが、ラベルは更新されず、100 と表示されません。アプリを閉じて再度開いても、ラベルはまだ間違っています。でも!ボタンをクリックして 2 番目のビューに移動し、2 番目のビューのボタンをクリックして最初のビューに戻ると (スライダーを調整しなくても)、テキスト ラベルに 100 の値が表示されます。

ユーザーが2番目のビューから最初のビューに戻るとすぐに、最初のビューのテキストラベルがスライダーの値で更新されるように、コードを変更する方法を誰かが提案できますか? ありがとう!

4

1 に答える 1