2012-08-16 101 views
1

我有我我推从viewcontroller.testviewcontroller一个testviewcontroller已经后退按钮和肯定button.when按下时使用在导航堆栈中找不到推动的视图控制器?

[self.navigationController popViewControllerAnimated:YES]; 

按后退按钮我要回以前的应用程序Yes按钮我正在推动使用

GettingViewController *get =[[GettingViewController alloc] initWithNibName:@"GettingViewController" bundle:nil]; 
[self.navigationController pushViewController:get animated:NO]; 

另一个视图控制器这是按下一个按钮,我正在坡平当所有工作fine.in的rewardsget回testviewcontroller.using这个`

for (TestViewController*vc in [self.navigationController viewControllers]) { 
      if ([vc isKindOfClass: [TestViewController class]]){ 

       [[self navigationController] popToViewController:vc animated:YES]; 
      } 
     } 
` 

但是当我在该视图中按后退按钮它需要去我的新推视图控制器,即rewardsget.But当我打印视图控制器它不存在于stack.so它再次回来到第一个推动视图控制器,不是最新的。任何人都可以帮助我呢?

+0

尝试在你的循环内添加NSLog,你的循环是否执行? – janusbalatbat 2012-08-16 05:40:20

+0

ya它的工作。这不是问题。当我在后退按钮中打印viewcontrollers它不是打印rewardsget.that我已经push.thats问题。 – hacker 2012-08-16 05:44:22

+0

@bugfinder我认为你采取了本地变量;所以它在功能/方法失效时被释放;所以尽量提供属性合成并检查一次; – alishaik786 2012-08-16 05:48:55

回答

0

听起来好像您的堆栈中有多个TestViewController实例。要得到正确的只是一个指针TestViewController传递给你的GettingViewController,你可能希望有一个属性:

@property (nonatomic, assign) TestViewController* testViewController;

当你准备回到你TestViewController通话[self.navigationController popToViewController: self.testViewController animated: YES];

这就是说,这听起来像你的导航流可能需要一些更多的想法。在iOS上,中心辐射式导航流程是最自然的。

0

在for for循环中,您将浏览所有viewControllers,但已经假装它们是TestViewController(TestViewController * vc ...)。当然,您正在寻找的第一个是KindOfClass TestViewController!

尝试将其更改为UIViewController * vc!

相关问题