如果我对您的理解正确,您想让/告诉呈现控制器解除模态视图控制器 模态视图控制器?
我认为这就是您考虑将self 作为“参数”传递给模态视图控制器的原因,以便它可以引用它并通过使用[self dismissViewControllerAnimated:YES completion:nil]; 使其消除ModalViewController提到了吗?
如果是这样,您可以使用协议:
在模态视图控制器的头文件 (.h) 中,声明:
@protocol ModalViewControllerProtocol
@require
- (void)dismiss;
@end
@interface ModalViewController
在您提供的控制器中,在您的情况下为 ModalViewController,在 .h 中声明以下内容:
@property(assign, nonatomic) id<ModalViewControllerProtocol>myDelegate;
并使您的呈现控制器适应协议:
@interface presentingViewController <ModalViewControllerProtocol>
还有:
ModalViewController *modal = [[ModalViewController alloc] init];
modal.myDelegate = self;
[self presentViewController:modal animated:YES completion:nil];
当你的模态视图控制器被呈现并且你想告诉你的呈现控制器关闭它时,你可以这样做:
[self.myDelegate dismiss];
最后在你的展示视图控制器中实现dismiss 方法:
- (void)dismiss
{
[self dismissViewControllerAnimated:YES completion:nil];
}
人们也可以忘记所有上述内容,只需在呈现的视图控制器(在您的情况下为 ModalViewController)中调用以下内容:
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
但在某些情况下,self.presentingViewController 没有返回与模态视图控制器相同的控制器。因此,使用协议方法可以确保我们希望相同的呈现视图控制器关闭呈现的控制器。