1

そのため、ここにいるユーザーの 1 人が、文字列を介して子ビュー コントローラーから親ビュー コントローラーにデータを渡す方法を教えてくれました。

これで文字列が渡されましたが、アプリを閉じて再度開いた後も、その値を firstViewController に表示したままにしておきます。

ちなみに、値は NSUserDefaults で保存され、コンソールに表示されている NSLog ではアプリフォルダーに保存されますが、その値は UILabel ディスプレイに保存されません。

保存したときにのみ表示されますが、閉じて再度開くと消えますが、NsLogではまだアプリ内にありますが、UILabelには表示されません。

どうすればこれに対処できますか?

私のappDelegate.hiには

 @property (strong, nonatomic) NSString *sharedString;

secondViewController データを firstViewController に渡す。

私の secondViewController の save メソッドには、次の AppDelegate.h 宣言に関連する関数があります。

AppDelegate *apiDelegate = [[UIApplication sharedApplication] delegate]
apiDelegate.sharedString = self.textFieldData.text;

そして、私のfirstViewControllerには、2番目のviewControllerからのデータを表示するメソッドがあります:

   -(void) viewDidAppear:(BOOL)animated {
    AppDelegate *apiDelegate = [[UIApplication sharedApplication] delegate]
    self.DisplayData.text = appDelegate.sharedString;
     [super viewDidAppear: NO];

アプリを閉じた後にデータをそのまま保持していない何か問題がありますか、それともここに何かが欠けていますか?

4

2 に答える 2

4

そのため、ここにいるユーザーの 1 人が、文字列を介して子ビュー コントローラーから親ビュー コントローラーにデータを渡す方法を教えてくれました。

まず、parentViewController から childViewController を取得する方法について、いくつかの階層を確立する必要があります。childViewController から parentViewController にデータを渡す 1 つの方法は、デリゲートを使用することです。もう 1 つは、KVC/KVO プロトコルを使用している可能性があります。https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html

これで、childViewController で定義されたプロパティのオブザーバーを登録するだけで、必要な場所でその変更を観察できます (まあ、階層が満たされている場合)。

値を保存します。NSUserDefaults を使用して簡単に保存できます。投稿にコードは表示されませんが、キーを定義して値を NSUserDefaults に保存するだけです。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:sharedString forKey:@"sharedString"];
NSString *sharedStringFromDefaults = [defaults objectForKey:@"sharedString"];

また、

AppDelegate *apiDelegate = [[UIApplication sharedApplication] デリゲート]

Apple は、アプリケーション内でそのような参照を避けるように要求しています。アプリを制限するだけです。さらに、sharedString は AppDelegate にある必要はありません。そうしないと、AppDelegate は、アプリで共有した他のほとんどすべてのデータ構造で満たされます。

于 2013-10-25T03:54:28.430 に答える
1
//add this code when you want to store string
[[NSUserDefaults standardUserDefaults] setObject:self.textFieldData.text forKey:@"sharedString"];
[[NSUserDefaults standardUserDefaults] synchronize];

//and when you want string than
self.DisplayData.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"sharedString"];
于 2013-10-25T04:43:03.953 に答える