2

在所有视图控制器 present中,ModalViewController在我关闭模态视图控制器后,我想在当前视图控制器中调用一个方法。

我必须展示ModalViewController 我不能推送它,因为它是一个表单。由于我无法推送它(void)viewDidAppear:(BOOL)animated,因此当我关闭表单时不会调用它。

顺便说一句,表单是一个设置菜单,我必须在每个视图控制器中调用它,所以我不能使用通知,因为有超过 20 个视图控制器并且只有一个设置菜单;

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] ;

在我想调用的视图控制器中; [self.navigationController popToRootViewControllerAnimated:NO];

当表单被关闭时,有没有办法在 View Controller 中调用方法?

4

3 回答 3

1

从 iOS 5 开始,您可以使用presentingViewControllerevery 的属性UIViewController来查看 1)它们是否首先以模态方式呈现,以及 2)然后以模态方式呈现它们的是谁。因此,如果您通过调用来展示您的表单[self.navigationController presentModalViewController:modalViewNavController animated:YES],展示的视图控制器将成为根导航控制器,您可以告诉它在您关闭模式展示的同时弹出到根。

顺便说一句,storyboard每个视图控制器中还有一个源自故事板的属性,因此您可以在按名称实例化新的故事板视图控制器时直接使用该属性。

于 2013-02-14T23:35:47.977 回答
1

制作您自己的委托并设置将视图呈现为委托的视图控制器。当它即将被解除时,从 modalVC 调用。

于 2013-02-15T00:20:57.223 回答
-1

如果您想在关闭之前发送消息,您可以像这样从模态视图控制器设置modalViewController.parentViewController = self;然后使用它:

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