1

私は2つのUIViewControllers AとBを持っています.

[self presentViewController:B animated:YES completion:nil];

呼び出した後dismissViewController:、B ViewControllerller を提示した親 ViewController のメソッドを呼び出す機能が必要です。メソッドが呼び出されると思い-viewWillAppearましたが、却下後に機能しません。

4

3 に答える 3

1

コントローラBサブクラスで、コントローラAのプロパティを作成します。

@property (nonatomic, strong) ControllerA *controllerA;

コントローラBを提示する前に、プロパティを設定します。

[controllerB setControllerA:self];

コントローラBを閉じるときは、完了ブロックを使用して、実行するコントローラAのメソッドを呼び出します。

   [self dismissViewControllerAnimated:YES completion:^{
        [self.controllerA doSomething];
    }];

(考えられる落とし穴の1つは、controllerAがcontrollerBの前に割り当て解除された場合、保持サイクルが発生することです。その場合は、controllerAをcontrollerBのデリゲートとして設定し、非公式のプロトコルを使用することをお勧めします)

于 2013-03-02T16:17:08.670 に答える
1

解決策は、「A」ViewControllerに「B」ViewControllerを(A ViewControllerへのポインタを介して)閉じるように依頼し、完了コードで必要なことを行うことです。

iOS6 では、A、B、C の ViewController がある場合に、View Controller の「巻き戻し」機能が導入されました。C が表示されたときに、A に巻き戻すことができます。

このリンクを見てください

于 2013-03-02T13:06:42.780 に答える
1

オブジェクトを作成してからB ViewController、1 つのカスタムinitメソッドを実装すると、次のようになります。

このメソッドを入れてB ViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil withParentView:(UIViewController *)parentViewController
 {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
    self.pViewController = parentViewController;
   // Custom code
}
return self;

}

B View Controller のオブジェクトを作成したら、上記のメソッドを使用すると、parentViewControllerselfになります。

そして、あなたがカムコールを却下する時に

[self.pViewController viewWillAppear:NO];

これがあなたを助けることを願っています。

ではごきげんよう!!!

于 2013-03-02T12:59:32.337 に答える