1

我有一个应用程序,我在其中从 viewcontroller 推送 testviewcontroller。testviewcontroller 有一个后退按钮和一个是按钮。当按下后退按钮时,我将使用返回到上一个

[self.navigationController popViewControllerAnimated:YES];

当按下是按钮时,我正在使用另一个视图控制器

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

这一切都很好。在按下按钮时的奖励中,我弹回到 testviewcontroller。使用这个`

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

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

但是当我在该视图中按下后退按钮时,它需要转到我的新推送视图控制器,即奖励获取。但是当我打印视图控制器时,它不存在于堆栈中。所以它再次回到第一个推送视图控制器,不是最新的。有人可以帮我吗?

4

2 回答 2

0

在您的 for 循环中,您遍历所有 viewController,但已经假装这些是 TestViewController (TestViewController*vc ...)。当然,您要寻找的第一个是KindOfClass TestViewController!

尝试将其更改为 UIViewController*vc!

于 2012-08-22T14:05:05.743 回答
0

听起来您的堆栈中有多个 TestViewController 实例。要找到正确的,只需将指向 TestViewController 的指针传递给您的 GettingViewController,您可能需要一个属性:

@property (nonatomic, assign) TestViewController* testViewController;

当您准备好返回 TestViewController 调用时[self.navigationController popToViewController: self.testViewController animated: YES];

也就是说,听起来您的导航流程可能需要更多思考。在 iOS 上,中心辐射式导航流程是最自然的。

于 2012-08-22T13:54:24.187 回答