如何使用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。

有几种方法可以实现这一目标。

  1. 使用通知
  2. 使用代表
  3. 使用sockets/属性

您还可以在ControllerA创建一个ControllerA实例var,然后在将pushViewController从A调用到B之前将ControllerA (self)传递给ControllerB (例如:通过方法)。您可以从B到C等执行相同操作。 我认为最好的解决方案是Jhaliya,以防你想使用navigationControllers。