在目标C中引用另一个类中的实例化对象

时间:2010-03-19 23:15:16

标签: objective-c xcode navigationcontroller uiapplicationdelegate

我在目标C的ipod app上使用xcode,我的一个类(rootViewController)中有一个字段(navigationController)。如何从另一个类引用实例化的rootViewController的navigationController?例如,如果我想从FirstViewController.m类引用navigationController,我该怎么做?

我似乎只能找到引用它以引用应用程序委托。

如果我想用FirstViewController引用应用程序委托,我只想说:

MyAppDelegate *delegate = [[UIApplication sharedApplication] delegate];

[delegate.navigationController pushViewController:childController animated:YES];

如何为rootViewController类而不是MyAppDelegate执行此操作?

2 个答案:

答案 0 :(得分:0)

一个对象需要引用另一个对象。有很多方法可以实现这一目标。例如:

  • 让同一个对象同时创建它们,因为它们都知道它们,告诉它们彼此
  • 在同一个笔尖中创建它们并使用正常连接将它们连接起来
  • 让其中一个对象的所有者了解另一个

基本上,这只是一个正确设计应用程序的问题,以便可以相互告知对象。你没有一件神奇的事情。

答案 1 :(得分:0)

根据您提出的问题,您似乎想要调用堆栈中较高位置的UINavigationController上的方法。所有UIViewControllers都有一个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] 将为您提供首先被推入的导航控制器。