2011-05-26 96 views
2

我有一个“NewsViewController”,它有一个PostViewController类型的名为“postViewController”的属性。从PostViewController内部我想调用NewsViewController类的一个方法。什么是最简单的方法来做到这一点?iphone亲子对象关系

google搜索这个问题之后,好像我应该使用委托或发送通知,但我希望会有这样做就像[self.parent parentMethod]一个更简单的方法...

请告诉我还有一个更简单方法来做到这一点! :) (如果没有,请解释原因!)

+0

几乎涵盖了所有常用方法,传递父对象并使用[self .parent parentMethod]可能不是最好的最可扩展的方式,但它起作用,而且这真的是最重要的事情。我会建议学习委托模式或观察者模式(前面提到的两个),因为它们将成为以后的宝贵工具。 – Joe 2011-05-26 17:06:15

+0

你的意思是“传递父对象”到底是什么意思? – teum 2011-05-28 12:36:18

+0

NewsViewController中的方法可以是静态的吗?如果是这样,那么在PostViewController中不需要它的实例。另外,如果方法可以是静态的,也许它应该被重构成实用程序或辅助类来减少耦合。 – johnnieb 2011-05-29 19:29:15

回答

0

好像我应该使用委托或发送一个通知,但我希望有一个更简单的方法来做到这一点,如[self.parent parentMethod]

代表,在其最基本的水平。在处理parentMethod消息的类型的子对象上创建一个属性。在实例化子对象或您的子对象后,您的父项将self指定给它,并显示init...方法,您可以将它传入。

-1

使用super关键字:[super parentMethod]

看到这个答案:What exactly is super in Objective-C?

+0

这是为显式调用其超类的子类。这个问题的部分问题是术语“父母”和“孩子”的定义。可能是他意味着视图和子视图,或导航控制器堆栈上的viewControllers ... – 2011-05-26 17:10:30

+0

是的,我的问题不够清楚,这就是为什么我改述它。你是对的我不想从一个子类中调用超类的方法。我需要从它的一个属性中调用一个对象的方法......我很难正确地写它,阅读我编辑过的第一篇文章可能会有所帮助。 – teum 2011-05-28 12:39:26

+0

这个问题已经完全改变了。我认为我不应该投下票。 – johnnieb 2011-05-29 18:50:54