如何使用popToViewController发送字符串值
我正在使用navigationcontroller。 我有(Root,A,B,C,D)课程。 我想通过popToViewController将字符串测试值Class D传递给Class A.
请给我一些建议。
谢谢
UINavigationController
维护viewControllers
中所有推送控制器的列表,根控制器始终驻留在0
。
MyAController *myController = (MyAController *)[self.navigationController.viewControllers objectAtIndex:0]; myController.myText = @"My String" ; [self.navigationController popToViewController:myController animated:YES];
您可能想重新考虑您的设计,但由于您没有提供足够的信息来建议如何,您可以尝试这样做:
A *aController = (A *)[myNavController rootViewController]; [aController setMyString:@"your string here"]; [myNavController popToRootViewControllerAnimated:YES];
将该字符串作为类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。
有几种方法可以实现这一目标。
- 使用通知 。
- 使用代表 。
- 使用sockets/属性 。
您还可以在ControllerA
创建一个ControllerA
实例var,然后在将pushViewController
从A调用到B之前将ControllerA (self)
传递给ControllerB
(例如:通过方法)。您可以从B到C等执行相同操作。 我认为最好的解决方案是Jhaliya,以防你想使用navigationControllers。