1

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

我似乎只能找到对此的引用来引用应用程序委托。

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

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

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

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

4

2 回答 2

0

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

  • 让同一个对象创建两者,因为它知道它们,所以告诉它们彼此
  • 在同一个笔尖中创建它们并用普通连接将它们连接起来
  • 让笔尖的所有者知道其中一个对象是另一个对象

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

于 2010-03-19T23:24:27.993 回答
0

根据您提出的问题,您似乎想调用堆栈中较高的 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。

于 2010-03-20T00:23:28.687 回答