当模态视图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之前和之后)。