喜悦,
假设您有一个 viewController 正在呈现另一个模态 - 称之为“root”。
模态被称为“模态”
“根”会说,
[self presentModalViewController:Modal];
那么 Root 是如何知道何时关闭 Modal 的呢?做到这一点的最好方法是为这种行为制定一个“协议”。
在 Modal 的头文件中,会有这样的代码:
@protocol ModalViewDelegate <NSObject>
-(void)modalViewControllerDidFinish:(UIViewController *)viewController;
@end
然后,应该有一个模态的实例变量:
id<ModalViewDelegate> delegate;
有一个属性:
@property (assign) id<ModalViewDelegate> delegate;
这使得每次 Modal 向它的属性 'delegate' 发送消息时,我们都知道它具有方法 -(void)modalViewControllerDidFinish:
因此,假设在 Modal 中有一个您想要关闭它的按钮。按钮只需要调用[delegate modalViewControllerDidFinish:self];
在 root 的头文件中,您可以像这样声明该类:
@class Root : UIViewController <ModalViewDelegate>
你实现了 modalViewControllerDidFinish 方法,如下所示:
-(void)modalViewControllerDidFinish:(UIViewController *)controller {
// any action you need to take on controller
[self dismissModalViewControllerAnimated:YES];
}
这有意义吗?