2

すべてのビューコントローラで 、モーダルビューコントローラを閉じpresentた後、現在のビューコントローラのメソッドを呼び出したいと思います。ModalViewController

フォームシートであるため、プッシュできないModalViewControllerを提示する必要があります。プッシュできないので(void)viewDidAppear:(BOOL)animated、フォームシートを閉じても呼び出されません。

ところで、フォームシートは設定メニューであり、すべてのView Controllerで呼び出す必要があるため、20を超えるView Controllerと1つの設定メニューしかないため、通知を使用できません。

Navigation controller -> Root- > VC1 - > VC2 - > VC3 ->VC4........... VC20......
                                  |       |       |     |               |
                                 Menu    Menu    Menu  Menu           Menu

私はメニューを提示します:

UIStoryboard*  sb = [UIStoryboard storyboardWithName:@"MainStoryboard"
                                              bundle:nil];
SettingsListViewController *settingsVC = [sb instantiateViewControllerWithIdentifier:@"SettingsListViewController"];
UINavigationController *modalViewNavController= [[UINavigationController alloc] initWithRootViewController:settingsVC];
modalViewNavController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
modalViewNavController.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentModalViewController:modalViewNavController animated:YES];

私はそれを却下します:

 //dissmiss view
 [self.navigationController dismissModalViewControllerAnimated:YES] ;

ViewControllersで呼び出したい; [self.navigationController popToRootViewControllerAnimated:NO];

フォームシートが閉じられたときにViewControllerのメソッドを呼び出す方法はありますか?

4

3 に答える 3

1

独自のデリゲートを作成し、ビューをデリゲートとして表示するビュー コントローラーを設定します。そして、閉じようとしているときに modalVC から呼び出します。

于 2013-02-15T00:20:57.223 に答える
1

presentingViewControlleriOS 5 以降、every のプロパティを使用して、UIViewController1) そもそもモーダルで表示されているかどうか、2) モーダルで表示しているのは誰なのかを確認できます。したがって、 を呼び出してフォーム シートを[self.navigationController presentModalViewController:modalViewNavController animated:YES]提示すると、提示するビュー コントローラーがルート ナビゲーション コントローラーになり、モーダル プレゼンテーションを閉じると同時にルートにポップするように指示できます。

ちなみに、storyboardストーリーボードに由来するすべてのビュー コントローラーにもプロパティがあるため、新しいストーリーボード ビュー コントローラーを名前でインスタンス化するときに、そのプロパティを直接使用できます。

于 2013-02-14T23:35:47.977 に答える
-1

modalViewController.parentViewController = self;閉じる前にメッセージを送信したい場合は、次のようにモーダルビューコントローラーから設定して操作できます。

- (void)viewWillDisappear:(BOOL)animated {
    [self.parentViewController doSomething];
}
于 2013-02-14T20:19:37.333 に答える