关闭模式视图时不调用 ViewDidAppear
ViewDidAppear not called when the modal view is dismissed
首先,我创建一个 MainViewController。然后在 MainViewController 中,我做
[self presentViewController:modalViewController animated:YES completion:nil];
modalViewController.modalPresentationStyle = UIModalPresentationFormSheet;
当我关闭 modalViewController 时,
在 iPhones(iPhone 6+ 除外),调用 MainViewController 的 viewDidAppear。
在 iPad 和 iPhone 6+ 上,不会调用 MainViewController 的 viewDidAppear。
逻辑是在 modalViewController 被关闭时调用一个函数。我怎么知道 modalViewController 何时被关闭。
Apple 提供的视图控制器执行此操作的方式是在呈现的视图控制器上有一个委托,当该视图控制器请求关闭时调用它。然后,演示者将负责关闭控制器,因此也将知道何时进行任何相关的清理(在动画之前和之后)。
当您关闭模态视图控制器时,您可以使用委托在 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];
}
首先,我创建一个 MainViewController。然后在 MainViewController 中,我做
[self presentViewController:modalViewController animated:YES completion:nil];
modalViewController.modalPresentationStyle = UIModalPresentationFormSheet;
当我关闭 modalViewController 时, 在 iPhones(iPhone 6+ 除外),调用 MainViewController 的 viewDidAppear。 在 iPad 和 iPhone 6+ 上,不会调用 MainViewController 的 viewDidAppear。
逻辑是在 modalViewController 被关闭时调用一个函数。我怎么知道 modalViewController 何时被关闭。
Apple 提供的视图控制器执行此操作的方式是在呈现的视图控制器上有一个委托,当该视图控制器请求关闭时调用它。然后,演示者将负责关闭控制器,因此也将知道何时进行任何相关的清理(在动画之前和之后)。
当您关闭模态视图控制器时,您可以使用委托在 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];
}