解除模态视图时未调用ViewDidAppear

Gon*_*han 9 iphone objective-c viewcontroller modalviewcontroller ios

首先,我创建一个MainViewController.然后在MainViewController中,我这样做

[self presentViewController:modalViewController animated:YES completion:nil];
modalViewController.modalPresentationStyle = UIModalPresentationFormSheet;
Run Code Online (Sandbox Code Playgroud)

当我关闭modalViewController时,On iPhone(iPhone 6+除外),调用MainViewController的viewDidAppear.在iPad和iPhone 6+上,不调用MainViewController的viewDidAppear.

逻辑是在解除modalViewController时调用一个函数.我如何知道modalViewController何时被解除.

Dan*_*elG 7

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

MainViewController.h:

@protocol YourDelegate <NSObject>
- (void)someFunction;
@end

@interface MainViewController : UIViewController <YourDelegate>

@end
Run Code Online (Sandbox Code Playgroud)

MainViewController.m:

// Where you present the modal view
ModalViewController *view = [[ModalViewController alloc] init];
view.delegate = self;
[self presentViewController:view animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

ModalViewController.h:

@interface ModalViewController : UIViewController
@property (nonatomic, weak) id<YourDelegate> delegate;
@end
Run Code Online (Sandbox Code Playgroud)

ModalViewController.m

// Wherever you dismiss..
[self dismissViewControllerAnimated:YES completion:^{
    [self.delegate someFunction];
}
Run Code Online (Sandbox Code Playgroud)