UIViewController如何跳转到祖父母视图?

时间:2015-05-19 04:06:28

标签: ios uiviewcontroller

enter image description here

我有3个视图叫做A,B和C.它们之间的区别是“模态地存在”。 dismissViewControllerAnimated可以用来跳回到父视图控制器,但它有没有办法直接从C跳转到A?

4 个答案:

答案 0 :(得分:1)

如果您使用的是故事板,则可以使用展开segue 来备份视图控制器层次结构中的多个步骤。

  1. edit1: function() { this.$el.addClass("editing"); this.$("input").eq(0).focus(); }, .... edit5: function() { this.$el.addClass("editing"); this.$("label.todo-job").eq(4).focus(); } 形式的视图控制器A上定义方法。它需要以segue作为参数,而不仅仅是任何- (IBAction)unwind:(UIStoryboardSegue *)segue发件人。
  2. 将视图控制器C中的segue操作连接到控制器视图上方白色栏中的退出代理。您应该会看到一个弹出菜单,其中包含一个展开的segue选择器列表;选择你之前定义的那个。
  3. 通过遍历父级并呈现视图控制器层次结构来展开工作,直到找到实现所选方法的控制器。您不必在此方法中添加任何代码;只是让它与空体存在就足够了。一旦故事板找到这样的方法,它将弹出并关闭视图控制器,直到它显示实现该方法的那个。

答案 1 :(得分:1)

如果你想直接跳转到A和A你是rootViewcontroller然后你可以在你的C控制器中使用这个代码

self.navigationController?.popToRootViewControllerAnimated(true)

但是如果你想将某个数据从C控制器传递给A控制器,那么你必须使用Segue 这些都在navigationController类中提到 请参阅:https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/NavigationControllers.html

答案 2 :(得分:1)

使用Push和Pop ViewControllers的导航堆栈,如果你需要提交和解除viewController,你可以尝试UIAnimation with Navigation Push和Pop堆栈,

然后您可以使用以下代码轻松导航到Parent ViewController。

[self.navigationController popToViewController:self.navigationController.viewControllers [self.navigationController.viewControllers.count - 3] animated:YES];

希望,这可能会对你有所帮助。 !!!!!

答案 3 :(得分:0)

UINavigationController_Class

popToViewController:animated:

目标 - C

   UIViewController *prevVC = [self.navigationController.viewControllers objectAtIndex:IndexViewOfA];
    //you get index of view (A,B,C) from array self.navigationController.viewControllers
    [self.navigationController popToViewController:prevVC animated:YES];

popTOViewController

这可能对您有所帮助:)。