繁体   English   中英

ios-如果关闭模态,如何在ViewController中调用方法

[英]IOS How to call a method in a ViewController if modal is dismissed

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

我必须要介绍presentModalViewController,因为它是一个表单,所以我不能推送它。 因为我不能推动它,所以我关闭表单时不会调用(void)viewDidAppear:(BOOL)animated

顺便说一句,表单是一个设置菜单,我必须在每个View Controller中调用它,所以我不能使用通知,因为有20多个View Controller和一个设置菜单。

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中调用方法?

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

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

自己创建一个委托,并设置将视图显示为委托的视图控制器。在要关闭该视图时从modalVC调用。

您可以设置modalViewController.parentViewController = self; 然后从模态视图控制器使用它,例如,如果要在关闭前发送消息,请执行以下操作:

- (void)viewWillDisappear:(BOOL)animated {
    [self.parentViewController doSomething];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM