在目标 C 中引用另一个类中的实例化对象
Posted
技术标签:
【中文标题】在目标 C 中引用另一个类中的实例化对象【英文标题】:referencing an instantiated object in another class in objective C 【发布时间】:2010-03-19 23:15:16 【问题描述】:我在目标 C 中的 ipod 应用程序上使用 xcode,并且我的一个类 (rootViewController) 中有一个字段 (navigationController)。如何从另一个类中引用实例化的 rootViewController 的 navigationController?例如,如果我想从 FirstViewController.m 类中引用 navigationController,我该怎么做?
我似乎只能找到这个引用应用程序委托的引用。
如果我想用 FirstViewController 引用应用程序委托,我只是说:
MyAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
[delegate.navigationController pushViewController:childController animated:YES];
如何为 rootViewController 类而不是 MyAppDelegate 执行此操作?
【问题讨论】:
【参考方案1】:根据您提出的问题,您似乎想调用堆栈中较高的 UINavigationController 上的方法。所有 UIViewController 都已经有一个 navigationController 属性,它是 UINavigationController,它是堆栈上此 ViewController 的祖先。
因此,如果您有一个名为 root 的 RootViewController,它在某个时候会这样做
FirstViewController * first = [[FirstViewController alloc] initWithNibName:@"FirstView" bundle:nil];
[self.navigationController pushViewController:first animated:YES];
[first release];
然后 first.navigationController == root.navigationController
所以在第一次调用中
[self navigationController]
将为您提供与最初被推送到的相同的 navigationController。
【讨论】:
是的,这正是我要问的。哇,我被困了 2 个小时,我所要做的就是调用 [self.navigationController pushViewController...] 。谢谢!【参考方案2】:一个对象需要对另一个对象的引用。有很多方法可以实现这一点。例如:
让同一个对象创建两者,因为它知道它们,所以告诉它们彼此 在同一个 nib 中创建它们并将它们与普通连接挂钩 让笔尖的所有者知道其中一个对象是另一个对象本质上,这只是正确设计应用程序的问题,以便对象可以相互了解。你不会做任何一件神奇的事情。
【讨论】:
以上是关于在目标 C 中引用另一个类中的实例化对象的主要内容,如果未能解决你的问题,请参考以下文章