iphone:navigationcontrollerポップで文字列値を送り返します
-
19-09-2019 - |
質問
、これは非常に基本的なことかもしれないが、私は何をすべきかを把握can`t任意の応答に感謝しますので...
I`m navigationcontrollerを使用して、スタック内の第二のレベルに現在あります。ここで私は、文字列値を設定し、スタック内の最初のレベルに戻ってpopViewControllerAnimatedを使用しています。
何がスタック内のセカンドレベルから、その文字列値を使用するための最善の解決策になるかもしれませんか? I`veは、手動で第2レベルの最初のレベルに値を設定しようとしましたが、私は何か間違ったことしなければならない...
ありがとうございます。
編集:Im very new to both objective-c and C in general so i
mはまだ少し混乱:(
解決
は、内 MVC のパターンを適用することを検討しますあなたのプログラム - 独立したグローバルにアクセス可能なストレージ・クラスの文字列値を格納し(簡単な例では、アプリケーションデリゲートを使用するか、この目的のためにシングルトンオブジェクトを作成することもできます)。次に、あなたの第二のレベルのコントローラであなたは、ストレージに値を設定し、第一のレベルにあなたがストレージからそれを得る。
他のヒント
デリゲートパターンを使用する方が良いと思いませんか?あなたは、セカンドレベルのビューのデリゲートとしてトップレベルのビューを定義することができます。あなたはそれをスタックにプッシュする前に、第2レベルのコントローラのデリゲートプロパティを設定します。
の文字列は、セカンドレベルのコントローラをポップする前に、引数として文字列を使用してデリゲートメソッドを呼び出し、選択された後
ということの利点は、あなたが(タブ付きインターフェイスで例えば)同じ第二レベルコントローラの複数のインスタンスを持っている場合でも、それはまだ動作したいということでしょう。
これが最善の解決策ではないのですが、それは動作します:
[[self.navigationController.viewControllers objectAtIndex:0] setSmt:@"123"];
[self.navigationController popViewControllerAnimated:YES];
親ビューコントローラ内の値「SMT」が変更されます。