iphone - 如何弹出到不同的 View Controller

标签 iphone ios view pushviewcontroller popviewcontroller

我有四个 View Controller 类 A、B、C、D。

当从 A 类和 B 类按下“开始”按钮时,D 类被按下。

我在应用程序委托(delegate)中有一个方法可以为我做到这一点

-(void)showViewController {
    self.ViewController = [[[ViewController alloc] initWithNibName:@"View"     bundle:nil] autorelease];
    [self.navigationController pushViewController:self.ViewController animated:YES];
}

当从 D 类按下“返回”按钮时,它会弹回 A 类和 B 类,具体取决于按下哪个类 D 类
- (void)popViewController {
    [self.navigationController popViewControllerAnimated:YES];
}

我想要实现的是假设如果 A 类插入 D 类,但是当在 D 类中按下“后退”按钮时,我希望它转到 C 类而不是 A 类

我试图实现以下代码
-(void)popToViewController{
    [self.navigationcontroller popToViewController:self.ClassCViewController animated:YES]
}

这会导致 B 类发生我不想要的变化。

有什么建议么 ?

最佳答案

所以我建议你花点时间阅读有关 delegates 的苹果文档。 .他们会在这里做你想要的,两个 View 可以有相同的 subview 。从那里让 subview 调用委托(delegate)来确定它需要做什么。

要记住的另一件事是,让任何 View 插入 View 也成为负责弹出该 View 的 View 是一种很好的做法。

编辑:只是为了帮助您解决原始问题并让您思考正确的道路。当在 D 类中按下后退按钮时。您希望它从那里调用委托(delegate)(可以是 A 类或 B 类)上的方法,您可以让它转到同一个类。或者,如果你想呈现另一个 View ,让委托(delegate) View 呈现 C 类。使用委托(delegate)允许你让 A 类呈现 C 类,同时允许 B 类在按下返回时停留在 B 上。我希望这回答了你的问题。

关于iphone - 如何弹出到不同的 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14203045/

相关文章:

iphone - 您可以在 xcode 调试器中的任何位置看到 NSUserDefaults 的值吗?

iphone - ARC 中的 '[[something retain] autorelease]' 是什么?

ios - SpriteKit 在 [self removeAllActions] 上崩溃;

iphone - 确认 UIGestureRecognizer?

ios - 设置 MeasurementFormatter 实例的语言环境会使实例上设置的任何 numberFormatter 属性选项无效

iphone - 应用程序中任何位置的持久 View

ios - itunes怎么设置卖家名字和app名字一样?

javascript - 相当不同的用法

performance - Hive - 如何以最佳性能重用 Hive 中的子查询

ios - 在 TestFlight 中测试推送通知