iOS - 访问Modal的父属性
我可能过于复杂,但有没有办法访问模态父项的属性?iOS - 访问Modal的父属性
所以,我称之为“presentModalViewController”,然后我可以访问视图控制器上的一些属性,从模态中调用它。
感谢, 阿什利
好了,既然问这个问题我已经试过这看上去好像他们的工作,但没有一些技巧。
这样的例子就是这样。
((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;
一个完全可行的解决方案
我希望我不只是喋喋不休,我希望这可以帮助未来的人。
正确的方法是定义一个协议,并将委托定义为id
,如果您使用的是iOS 5,你可以调用self.presentingViewController访问父视图控制器
我让这个应用程序支持较旧的iOS版本,所以我不能这样做。 谢谢无论如何。 – 2012-04-29 14:47:04
你的答案是接近正确的 - 你想presentingViewController
而非parentViewController
,但是这可能如果你不小心,会导致紧密耦合(两个类之间的依赖关系,这意味着它们只能与对方一起工作)。
这是最好还是定义一个协议,但你的委托财产是没有必要的 - 这将具有相同的值作为presentingViewController
财产。
presentsViewController仅适用于iOS5,并且这需要与旧版本兼容。 – 2012-04-29 14:48:13
以我的经验,我总是使用委托模式来获取/设置当前呈现模式的视图的parentView属性。 – Sakares 2012-04-29 14:03:15