3

我可能过于复杂了,但有没有办法访问模态父项的属性?

因此,我调用“presentModalViewController”,然后我可以访问视图控制器上刚刚从模态调用它的一些属性。

谢谢,阿什利

4

3 回答 3

4

如果你使用的是 iOS 5,你可以调用 self.presentingViewController 来访问父视图控制器

这是苹果参考

于 2012-04-29T14:45:02.143 回答
2

您的答案几乎是正确的 - 您想要presentingViewController而不是parentViewController,但是如果您不小心,这可能会导致紧密耦合(两个类之间的依赖关系,这意味着它们只能相互协作)。

最好仍然定义一个协议,但您的委托属性不是必需的 - 它与该presentingViewController属性具有相同的值。

于 2012-04-29T14:47:00.283 回答
1

好的,所以自从提出这个问题以来,我尝试了一些看起来好像可以工作但没有成功的技术。

这样的例子就是这样。

((pController *)self.parentViewController).testString;

然而,虽然它是一个常规的 UIViewController 呈现模式,但父级实际上是一个 UITabBarController,即使使用 selectedViewController 也不起作用。

我的解决方案是添加到我的模态的 .h 文件中

id delegate;

@property (nonatomic, assign) id delegate;

在实现文件中综合它之后,分配/初始化modalViewController,但在呈现它之前我设置了

modalViewController.delegate = self;

这样我就可以从我的模态中调用 self.delegate 。这还不够,因为它没有说明它是哪个视图控制器,所以我不能说

self.delegate.testString;

但是我之前学到的演员阵容让我得到了一个完全可行的解决方案

((pController *)self.delegate).testString;

我希望我不只是胡言乱语,我希望这可以帮助将来的人。

于 2012-04-29T14:36:07.107 回答