我正在使用navigationcontroller。我有(Root,A,B,C,D)课程。我想通过popToViewController将字符串测试值类 D 打到Class A 。
请给我一些建议。
由于
答案 0 :(得分:10)
UINavigationController
维护viewControllers
中所有推送控制器的列表,根控制器始终位于0
。
MyAController *myController = (MyAController *)[self.navigationController.viewControllers objectAtIndex:0];
myController.myText = @"My String" ;
[self.navigationController popToViewController:myController animated:YES];
答案 1 :(得分:3)
您可能想重新考虑您的设计,但由于您没有提供足够的信息来建议如何,您可以试试这个:
A *aController = (A *)[myNavController rootViewController];
[aController setMyString:@"your string here"];
[myNavController popToRootViewControllerAnimated:YES];
答案 2 :(得分:1)
有几种方法可以实现这一目标。
答案 3 :(得分:1)
将该字符串作为类a的属性,然后您需要从D类中的导航堆栈访问视图A的该对象。
然后访问该属性以供使用。
如果A类是rootView,那么jtbandes的答案可以帮助你从堆栈代码中获取它有点像这样
if([self.navigationController.viewControllers count]>3)
A *aController=(A *)[self.navigationController.viewControllers objectAtIndex: [self.navigationController.viewControllers count]-4];
如果您的导航是A-> B-> c-> D
然后你可以通过[self.navigationController.viewControllers count] -2来访问c,类似地B由-3 A乘以-4。
答案 4 :(得分:0)
您还可以在ControllerA
中创建ControllerB
实例变量,然后在调用{{1}之前将ControllerA (self)
传递给ControllerB
(例如:通过方法)从A到B.你可以从B到C ......等等;我认为最好的解决方案是Jhaliya,如果你想使用navigationControllers。