【问题标题】:How to pass parameters from a modal viewcontroller?如何从模态视图控制器传递参数?
【发布时间】:2015-10-30 13:31:54
【问题描述】:

我有两个视图控制器。这是第二个:

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

第二个模态窗口:

[self dismissViewControllerAnimated:YES completion:nil];

如何从模态视图控制器传递参数?

【问题讨论】:

  • 你能解释一下你的问题吗?您想将参数从一个视图控制器传递到另一个视图控制器吗?
  • “第一个是第二个”...?所以他们指向同一个对象?你应该编辑这个问题:不清楚你想要传递参数的内容,甚至句子也很难阅读(第 4 个单词之后是否有一个点,或者那是句子的延续......?)。无论如何传递参数确实是一项基本任务,您应该先阅读教程,它会教您这些东西。

标签: ios objective-c ios7 uiviewcontroller ios8


【解决方案1】:

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

我认为这就是您考虑将self 作为“参数”传递给模态视图控制器的原因,以便它可以引用它并通过使用[self dismissViewControllerAnimated:YES completion:nil]; 使其消除ModalViewController提到了吗?

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

在模态视图控制器的头文件 (.h) 中,声明:

@protocol ModalViewControllerProtocol

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

在您提供的控制器中,在您的情况下为 ModalViewController,在 .h 中声明以下内容:

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

并使您的呈现控制器适应协议:

@interface presentingViewController <ModalViewControllerProtocol>

还有:

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

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

[self.myDelegate dismiss];

最后在你的展示视图控制器中实现dismiss 方法:

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

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

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

但在某些情况下,self.presentingViewController 没有返回与模态视图控制器相同的控制器。因此,使用协议方法可以确保我们希望相同的呈现视图控制器关闭呈现的控制器。


【讨论】:

  • 谢谢。这就是我所拥有的。不幸的是,我在我的书中还没有提到这一点。你帮了我很多。对不起我的英语不好。虽然他水平不高。
  • 我有一个包含过滤器的模态窗口。点击过滤后的数据应该进入主视图
  • 现在我使用数据单例。我在做的是真的吗?
  • @imiroslav 没关系。不用道歉。关于您的最后 2 个 cmets:我们需要更多信息才能回答,即关于您的视图层次结构(第 2 条评论)和数据结构(第 3 条评论),以便知道它是否值得使用的单例模式。如果您有一个抽象视图层次结构,那么它太抽象且难以描述,您可以发布屏幕截图或链接。鉴于所有这些,发布 2 个单独的问题会很有帮助,因为您将有更多的空间来描述,而回答者则有更多的空间来回答。祝你好运!
猜你喜欢
  • 1970-01-01
  • 2017-03-14
  • 2012-10-23
  • 2018-07-10
  • 2015-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多