0

RootViewController と DetailViewController の 2 つのビュー コントローラーがあります。

Push SegueStoryboard でto DetailViewControllerfromを定義し、RootViewControllerその ID を に設定しますShowDetailView。次に、メソッドを使用して DetailViewController でさまざまな変数を設定できます

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([[segue identifier] isEqualToString:@"ShowDetailView"]) {
    }
}

私の質問: に戻ってRootViewController辞任するときにメソッド (で実行) を呼び出す方法はありますか? 次のコードを使用して辞任します。DetailViewControllerRootViewController

[self.navigationController popViewControllerAnimated: YES];
4

1 に答える 1

0

デフォルトで?いいえ。このためのデリゲートを作成できます。

-(void)viewWillAppear:(BOOL)animatedしかし、代わりに、 RootViewController内で必要なコードを実行できると思います。

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    [self myMethodHere];
}

このviewWillAppearメソッドは、DetailViewController が再署名された直後に呼び出されます。


編集:言ったように、これを行う簡単な方法はありません。おそらく、デリゲートを使用するのが最善の方法です。それは本当に辞任後でなければなりませんか?前にできる場合は、次のように、rootViewController の参照を取得し、再署名の前にメソッドを実行できます。

 RootViewController *rootViewController = (RootViewController*) [[self.navigationController viewControllers] objectAtIndex:0];
[rootViewController someMethod];
[self.navigationController popViewControllerAnimated: YES];

本当に後になりたい場合は、上記のコードでフラグを作成して yes に設定し、viewWillAppear 内の if でこのフラグをチェックしてメソッドを実行します。そうしないと、デリゲートから実行できません。

于 2013-07-31T01:24:55.933 に答える