0

ボタンをクリックした後、FirstView から SecondView にデータを転送しています。

FirstView.h
@property (strong, nonatomic) NSString  *stringOfFirstView; 
FirstView.m

 - (void)pushToSecond {
         SecondView *controller   =   [[SecondView alloc] initWithNibName:@"SecondView" bundle:nil];
         controller.stringOfSecondView          =   self.stringOfFirstView;
         [self.navigationController pushViewController:controller animated:NO];

        }

SecondViewでは、私は持っています

SecondView.h
    @property (strong, nonatomic) NSString  *stringOfSecondView; 

SecondView での私の目標は、戻るボタンをクリックして FirstView に戻り、同様に割り当てstringOfSecondViewたいことです。stringOfFirstView

質問 :

How can I assign stringOfSecondView to stringOfFirstView via clicking back button.

お知らせしますが、SecondView の [戻る] ボタンのクリック イベントを検出しています。

SecondView.m
- (void) viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:YES];
    if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound)
        NSLog(@"will show onto console");  

} 

しかし、データを戻す方法に行き詰まっています

この問題について何か手がかりがあればアドバイスをお願いします。

4

4 に答える 4

2

デリゲートを使用します。したがって、SecondViewで、FirstViewにデータを送り返すプロトコルを作成する必要があります。FirstViewはSecondViewのデリゲートになります。デリゲートを作成する方法については、たくさんのチュートリアルがあります。

于 2012-07-23T19:16:36.497 に答える
0

基本的に、次の 2 つのオプションがあります。

  1. In secondView: への参照を保持firstView
  2. より柔軟な代替手段: 機能を再利用したい場合は、プロトコルを定義します。firstViewこのプロトコルを実装してfirstView、デリゲートにし ましょうsecondView

どちらの場合も、secondViewへの参照を格納する assign/weak-Property がありますfirstView。そしてfirstView、NSString を受け取り、それを格納するメソッドを実装します。stringOfFirstView

于 2012-07-23T19:21:03.400 に答える
0

戻るボタンをクリックして割り当てると考えない方がよいかもしれません。基本的に、戻るボタンをクリックすると、FirstView が制御を取り戻します。制御が戻った時点で、SecondView に stringOfSecondView の値を要求し、stringOfFirstView などの好きな場所に格納するだけです。

SecondView にこの情報を要求するには、FirstView のインスタンス変数にその ID を格納することで、SecondView が誰であるかを「覚えておく」ことができます。また、自動参照カウントを行っていない場合は、適切に保持および解放することを忘れないでください。

于 2012-07-23T19:21:59.283 に答える
0

ttran の回答を補足するために、http://mobiledevelopertips.com/objective-c/the-basics-of-protocols-and-delegates.html をご覧ください

基本的な考え方は、プロトコルを作成することです(このプロトコルを採用するクラスによって(オプションであるかどうかにかかわらず)実装する必要があるメソッドを定義します。これは、FirstViewController が Protocol を採用できることを意味します。したがって、Second View Controller は、いくつかのメソッドを認識できます。最初のView Controllerが持っています。

したがって、欠落している部分は、2 番目のビュー コントローラーが最初のビュー コントローラーへの参照を持つ必要があるということです。デリゲートを介してそれを行うことができます (デリゲートは通常、弱いプロパティです)。

繰り返しますが、プロトコルとデリゲートの基本を読むことで、このプロセスをさらに読み、理解することができます。

于 2012-07-23T19:22:16.223 に答える