如何使用popToViewController发送字符串值

时间:2011-06-28 05:23:51

标签: iphone objective-c ios uinavigationcontroller

我正在使用navigationcontroller。我有(Root,A,B,C,D)课程。我想通过popToViewController将字符串测试值类 D 打到Class A

请给我一些建议。

由于

5 个答案:

答案 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)

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

  1. 使用Notifications
  2. 使用Delegates
  3. 使用Outlets/Properties

答案 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。