[英]React on Modal ViewController being dismissed
我有三个ViewController和一个导航控制器。 导航堆栈为:
NavigationController-推> VC1,推> VC2。 VC1可以以代码形式形式呈现VC3。 它没有通过segues连接。
VC1-“您当前的项目”
VC2-“您的项目的详细信息”
VC3-“创建新项目”
当用户希望创建一个新项目时,我使用以下命令放置了VC3:
- (IBAction)newProjectButton:(id)sender {
NewProjectViewController *newProject = [[NewProjectViewController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:newProject];
[self presentViewController:navController animated:YES completion:nil];
}
我用户按下“取消”按钮,我使用此代码:
- (IBAction)cancelButton:(id)sender {
[self dismissViewControllerAnimated:YES completion:nil];
}
当用户按下“完成”按钮时,我希望VC1切换到VC2并显示新项目的属性。 我希望用户无法看到此序列,因此,他只看到以下事件链:
按下按钮“添加”->模态VC出现->按下“完成”->模态VC消失并且VC3已经显示。
我要问的是如何告诉VC1用户按下了“完成”按钮? 这里可以委托吗? 如何执行呢? 谢谢。
您应该创建一个委托协议,该协议允许模态视图控制器向其创建者发送通知。
@protocol ModalViewControllerDelegate
@optional
- (void)modalViewControllerDidCancel:(ModalViewController *)vc;
- (BOOL)modalViewControllerShouldSave:(ModalViewController *)vc;
@end
然后,在ModalViewController
定义一个新属性。 weak
很重要,因为您不想有任何保留周期。
@property (nonatomic, weak) id <ModalViewControllerDelegate> delegate;
在关闭或保存之前,只需检查委托是否已实现方法(通过-respondsToSelector:
并发送适当的回调。 创建模态视图控制器时,请不要忘记设置委托属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.