我在目标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执行此操作?
答案 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]
将为您提供首先被推入的导航控制器。