解除模态视图时未调用ViewDidAppear

时间:2015-03-26 05:49:39

标签: ios objective-c iphone viewcontroller modalviewcontroller

首先,我创建一个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什么时候被解雇。

2 个答案:

答案 0 :(得分:5)

当您关闭模态视图控制器时,可以使用委托在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];
}

答案 1 :(得分:3)

Apple提供视图控制器的方法是在呈现的视图控制器上设置一个委托,当该视图控制器请求关闭时调用该委托。然后,演示者将负责解雇控制器,因此也知道何时进行任何相关的清理(动画之前和之后)。