gpt4 book ai didi

ios - 如何从模态视图 Controller 传递参数?

转载 作者:行者123 更新时间:2023-11-29 01:46:29 26 4
gpt4 key购买 nike

我有两个 View Controller 。这是第二个:

UIViewController *modal = [[ModalViewController alloc]init];
[self presentViewController:modal animated:YES completion:nil];

第二个模态窗口:

[self dismissViewControllerAnimated:YES completion:nil];

如何从模态视图 Controller 传递参数?

最佳答案

如果我对您的理解正确,您想制作/告诉呈现 Controller 从模态视图 Controller 解除模态视图 Controller ?

我想这就是您考虑将 self 作为“参数”传递给模态视图 Controller 的原因,以便它可以引用它并使其关闭 ModalViewController 通过使用 [self dismissViewControllerAnimated:YES completion:nil]; 正如你提到的?

如果是这样,您可以使用协议(protocol):

在模态视图 Controller 的头文件 (.h) 中声明:

@protocol ModalViewControllerProtocol

@require
- (void)dismiss;
@end
@interface ModalViewController

在您提供的 Controller 中,在您的情况下是 ModalViewController,在 .h 中声明以下内容:

@property(assign, nonatomic) id<ModalViewControllerProtocol>myDelegate;

并制作您的呈现 Controller 以使其采用协议(protocol):

@interface presentingViewController <ModalViewControllerProtocol>

和:

ModalViewController *modal = [[ModalViewController alloc] init];
modal.myDelegate = self;
[self presentViewController:modal animated:YES completion:nil];

当你的模态视图 Controller 被呈现并且你想告诉你的呈现 Controller 关闭它时,你可以这样做:

[self.myDelegate dismiss];

最后在呈现 View Controller 中实现 dismiss 方法:

- (void)dismiss
{
[self dismissViewControllerAnimated:YES completion:nil];
}

人们也可以忘记所有上述内容,只需在呈现的 View Controller (在您的情况下为 ModalViewController)中调用以下内容:

[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];

但在某些情况下,self.presentingViewController 不会返回呈现模态视图 Controller 的同一 Controller 。因此,使用协议(protocol)方法将确保我们希望相同的呈现 View Controller 关闭呈现的 Controller 。


关于ios - 如何从模态视图 Controller 传递参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31872060/

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