我遇到了同样的问题,更好的解决方案是创建一个“DismissViewProtocol”,如下所示:
文件:DismissViewProtocol.h
@protocol DismissViewProtocol <NSObject>
-(void)dismissView:(id)sender;
@end
在我的 B-modal 视图中,让我们响应委托方法:
在我的 b.h 文件中:
#import "DismissViewProtocol.h"
@interface B-Modal : UIViewController <DismissViewProtocol>
...
@end
在我的 b.m 文件中:
-(void) dismissView:(id)sender
{
[((UIViewController *) sender) dismissModalViewControllerAnimated:NO];
[self dismissModalViewControllerAnimated:YES];
}
在同一个 B 视图控制器中,当我调用
接下来,在我的 B 模态视图中,当我调用另一个模态视图 C 时,假设为 segue:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
((C-ViewController *)segue.destinationViewController).viewDelegate=self;
}
最后,在我的 c.h 文件中,让我们为委托做准备:
@property(nonatomic, weak) id <DismissViewProtocol> viewDelegate;
在我的 c.m 文件中,我只是告诉我的 viewDelegate 关闭我的模态视图控制器及其本身:
-(void)closeBothViewControls
{
[self.viewDelegate dismissView:self];
}
就是这样。
希望对大家有用。