2

私はこのコードを持っています:

-(IBAction)OkButtonPressed:(id)sender{
    NSLog(@"BTN OK");
    RecherchePartenaireTableView *recherchePartenaireTableView=[[RecherchePartenaireTableView alloc]init];
    recherchePartenaireTableView.mytext=textFieldCode.text;

    [self.navigationController popViewControllerAnimated:YES];
}

OKを押した後、コンソールに「BTN OK」というメッセージが表示され、他には何も表示されません。クラス RecherchePartenaireTableView には、メソッド viewWillAppear、viewDidload... および各メソッドの NSLog メッセージがあります。[ の後に呼び出されるメソッドはself.navigationController popViewControllerAnimated:YES];?

4

3 に答える 3

4

コントローラー A があり、コントローラー B を A の上にプッシュしている場合、コントローラー B で popViewControllerAnimated を呼び出すと、

viewWillAppear:animated for controller A が呼び出されます

あなたの場合、BはRecherchePartenaireTableViewであるため、popViewControllerの実行時にBのviewWillAppearが呼び出される方法はありません。

RecherchePartenaireTableViewが消えたときに何かしたい場合は、RecherchePartenaireTableViewのviewWillDisappearで実行してください

于 2011-09-21T11:30:47.920 に答える
4

既にナビゲーション スタックにあるclass のプロパティを設定しようとしている場合RecherchePartenaireTableViewは、その新しいインスタンスを作成することで間違っています。

navigationController スタックからインスタンスを取得する必要があります。

変化する

RecherchePartenaireTableView *recherchePartenaireTableView=[[RecherchePartenaireTableView alloc]init];
recherchePartenaireTableView.mytext=textFieldCode.text;

NSArray *viewControllers = [self.navigationController viewControllers];
RecherchePartenaireTableView *recherchePartenaireTableViewVC = (RecherchePartenaireTableView *)[viewControllers objectAtIndex:viewControllers.count - 2];
recherchePartenaireTableViewVC.mytext=textFieldCode.text;

viewDidAppearメソッドは、ビューをプッシュしたクラスで呼び出されます。

于 2011-09-21T11:49:44.323 に答える
2
- (void) viewWillAppear: (BOOL)animated method will be called first
于 2011-09-21T11:12:59.440 に答える