Ios 当表单表(UIModalPresentationFormSheet)消失时,如何获取通知?

Ios 当表单表(UIModalPresentationFormSheet)消失时,如何获取通知?,ios,ipad,Ios,Ipad,我有一个视图控制器(a),它以表单(UIModalPresentationFormSheet)的形式显示另一个视图控制器(B) 现在,我想关闭视图控制器B,并在安全的情况下尽快显示另一个视图控制器(因为在显示或关闭另一个视图控制器时,您不能使用presentModalViewController:) 然而,当表单完全消失时,我似乎找不到任何方式得到通知。有什么解决方案吗?毫无疑问,您已经注意到,当退出UIModalPresentationFormSheet控制器时,不会触发旧的视图方法。您可以通

我有一个视图控制器(a),它以表单(UIModalPresentationFormSheet)的形式显示另一个视图控制器(B)

现在,我想关闭视图控制器B,并在安全的情况下尽快显示另一个视图控制器(因为在显示或关闭另一个视图控制器时,您不能使用
presentModalViewController:


然而,当表单完全消失时,我似乎找不到任何方式得到通知。有什么解决方案吗?

毫无疑问,您已经注意到,当退出
UIModalPresentationFormSheet
控制器时,不会触发旧的
视图方法。您可以通过在关闭控制器时简单地调用该方法来模拟ViewWillAspect调用,但这不是您所需要的

您可以将新的viewController推送到现有的模态视图控制器的navigationController,而不是显示第二个模态视图控制器吗?无论如何,这可能会提供更好的用户体验


或者你能用流行音乐吗?

我们就是这么做的

由于控制表单表(B)的视图控制器确实获得了
-viewdidenerge
,因此我们只需将呈现视图控制器(A)添加为代理,然后在(B)视图控制器上调用
-viewdidenerge
时手动通知该代理

委托定义如下所示:

@protocol FormSheetViewControllerDelegate

- (void)formSheetViewDidDisappear;

@end
我们向FormSheetViewController添加一个委托:

@interface FormSheetViewController

@property (nonatomic, weak) id <FormSheetViewControllerDelegate> delegate;

@end
@implementation FormSheetViewController

- (void)viewDidDisappear:(BOOL)animated {
    [delegate formSheetViewDidDisappear];
}

@end
p.S.: 由于iOS 5和块,UIViewController具有以下方法

- (void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion

您可以使用它来对表单表单视图的取消作出反应。

顺便说一句,对于需要调用“viewwillbeen”的任何人来说,这里描述了要实现的模式:(在ModalViewControllerDelegate下)