iOS - 访问Modal的父属性

时间:2012-04-29 13:56:37

标签: ios modalviewcontroller

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

所以,我打电话给" presentModalViewController"然后我可以访问刚从模态调用它的视图控制器上的一些属性。

谢谢, 阿什利

3 个答案:

答案 0 :(得分:4)

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

这里是apple reference

答案 1 :(得分:2)

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

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

答案 2 :(得分: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;

我希望我不仅仅是因为这样做而喋喋不休,我希望这可以帮助将来的某个人。