当模态视图closures时,ViewDidAppear不会被调用

首先,我创build一个MainViewController。 然后在MainViewController中,我做到了

[self presentViewController:modalViewController animated:YES completion:nil]; modalViewController.modalPresentationStyle = UIModalPresentationFormSheet; 

当我解雇modalViewController,在iPhone(iPhone 6+除外),调用MainViewController的viewDidAppear。 在iPad和iPhone 6+上,不调用MainViewController的viewDidAppear。

逻辑是在modalViewController被解除时调用一个函数。 我怎么知道什么时候modalViewController被解散。

当您closures模态视图控制器时,可以使用委托在MainViewController中调用您的函数。 例如:

MainViewController.h:

 @protocol YourDelegate <NSObject> - (void)someFunction; @end @interface MainViewController : UIViewController <YourDelegate> @end 

MainViewController.m:

 // Where you present the modal view ModalViewController *view = [[ModalViewController alloc] init]; view.delegate = self; [self presentViewController:view animated:YES completion:nil]; 

ModalViewController.h:

 @interface ModalViewController : UIViewController @property (nonatomic, weak) id<YourDelegate> delegate; @end 

ModalViewController.m

 // Wherever you dismiss.. [self dismissViewControllerAnimated:YES completion:^{ [self.delegate someFunction]; } 

苹果公司提供视图控制器的方法是,在所提供的视图控制器上有一个委托,当视图控制器请求closures时调用该委托。 然后,演示者将负责解散控制器,并且因此也知道何时执行任何相关清理(animation之前和之后)。

Interesting Posts