UIViewController如何跳转到祖父视图?
UIViewController how to jump to grandparent view?
我有 3 个视图,分别称为 A、B 和 C。它们之间的连接是 "present modally"。 dismissViewControllerAnimated
可以用来跳回parent view controller,但是有没有办法直接从C跳转到A?
如果您使用的是故事板,则可以使用 unwind segue 来备份视图控制器层次结构中的多个步骤。
- 在
- (IBAction)unwind:(UIStoryboardSegue *)segue
形式的视图控制器 A 上定义一个方法。它需要将 segue 作为参数,而不仅仅是任何 id
发件人。
- 在控制器视图上方的白色栏中连接一个从视图控制器 C 到退出代理的 segue 操作。您应该会看到一个弹出的菜单,其中包含一个 unwind segue 选择器列表;选择您之前定义的那个。
Unwind segues 通过遍历 parent 并呈现视图控制器层次结构来工作,直到找到实现所选方法的控制器。您不必在此方法中放置任何代码;只是让它存在一个空的 body 就足够了。一旦故事板找到这样的方法,它将弹出和关闭视图控制器,直到它显示实现该方法的视图控制器。
如果你想直接跳转到A并且A是你的rootViewcontroller那么你可以在你的C控制器中使用这段代码
self.navigationController?.popToRootViewControllerAnimated(true)
但是如果你想将某些数据从 C 控制器传递到 A 控制器,那么你必须使用 Segue
这些都在 navigationController class 中提到
参考:https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/NavigationControllers.html
Objective - 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
这可能对你有帮助:)
将导航堆栈用于推送和弹出 ViewControllers,如果您需要呈现和关闭 viewController 那么,您可以尝试使用带有导航推送和弹出堆栈的 UIAnimation,
然后您可以使用以下代码轻松导航到父 ViewController。
[self.navigationController popToViewController:self.navigationController.viewControllers[self.navigationController.viewControllers.count - 3] animated:YES];
希望这对您有所帮助。 !!!!!
我有 3 个视图,分别称为 A、B 和 C。它们之间的连接是 "present modally"。 dismissViewControllerAnimated
可以用来跳回parent view controller,但是有没有办法直接从C跳转到A?
如果您使用的是故事板,则可以使用 unwind segue 来备份视图控制器层次结构中的多个步骤。
- 在
- (IBAction)unwind:(UIStoryboardSegue *)segue
形式的视图控制器 A 上定义一个方法。它需要将 segue 作为参数,而不仅仅是任何id
发件人。 - 在控制器视图上方的白色栏中连接一个从视图控制器 C 到退出代理的 segue 操作。您应该会看到一个弹出的菜单,其中包含一个 unwind segue 选择器列表;选择您之前定义的那个。
Unwind segues 通过遍历 parent 并呈现视图控制器层次结构来工作,直到找到实现所选方法的控制器。您不必在此方法中放置任何代码;只是让它存在一个空的 body 就足够了。一旦故事板找到这样的方法,它将弹出和关闭视图控制器,直到它显示实现该方法的视图控制器。
如果你想直接跳转到A并且A是你的rootViewcontroller那么你可以在你的C控制器中使用这段代码
self.navigationController?.popToRootViewControllerAnimated(true)
但是如果你想将某些数据从 C 控制器传递到 A 控制器,那么你必须使用 Segue 这些都在 navigationController class 中提到 参考:https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/NavigationControllers.html
Objective - 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
这可能对你有帮助:)
将导航堆栈用于推送和弹出 ViewControllers,如果您需要呈现和关闭 viewController 那么,您可以尝试使用带有导航推送和弹出堆栈的 UIAnimation,
然后您可以使用以下代码轻松导航到父 ViewController。
[self.navigationController popToViewController:self.navigationController.viewControllers[self.navigationController.viewControllers.count - 3] animated:YES];
希望这对您有所帮助。 !!!!!