gpt4 book ai didi

ios - 对 Modal ViewController 被解雇使用react

转载 作者:行者123 更新时间:2023-11-29 12:40:52 25 4
gpt4 key购买 nike

我有三个 ViewController 和一个导航 Controller 。导航堆栈是:
NavigationController-push->VC1-push->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 并显示新项目的属性。我希望这个 segue 对用户是不可见的,所以,他只能看到这个事件链:
按“添加”按钮 -> 模态 VC 出现 -> 按“完成” -> 模态 VC 消失,VC3 已经显示。

我想问的是如何告诉 VC1 用户按下了“完成”按钮?这里可以委托(delegate)吗?如何实现?谢谢。

最佳答案

您应该创建一个委托(delegate)协议(protocol),允许模态视图 Controller 向其创建者发送通知。

@protocol ModalViewControllerDelegate
@optional
- (void)modalViewControllerDidCancel:(ModalViewController *)vc;
- (BOOL)modalViewControllerShouldSave:(ModalViewController *)vc;
@end

然后,在 ModalViewController 中定义一个新属性。 weak 很重要,因为您不希望有任何保留周期。

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

在关闭或保存之前,只需检查委托(delegate)是否已实现方法(通过 -respondsToSelector:)并发送适当的回调。在创建模态视图 Controller 时不要忘记设置委托(delegate)属性。

关于ios - 对 Modal ViewController 被解雇使用react,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24981906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com