【发布时间】:2012-06-19 13:11:06
【问题描述】:
是否可以在 UINavigationController 中弹出多个视图控制器?假设我想退后两步。
【问题讨论】:
标签: ios cocoa-touch uinavigationcontroller
是否可以在 UINavigationController 中弹出多个视图控制器?假设我想退后两步。
【问题讨论】:
标签: ios cocoa-touch uinavigationcontroller
是的,你可以通过做类似的事情来实现这一点
//Your navigation controller
UINavigationController *nav;
//Get the view controller that is 2 step behind
UIViewController *controller = [nav.viewControllers objectAtIndex:nav.viewControllers.count - 2];
//Go to that controller
[nav popToViewController:controller animated:YES];
【讨论】:
斯威夫特
Omar 提出的相同解决方案是:
// Get the previous Controller.
let targetController: UIViewController = navigationController!.viewControllers[navigationController!.viewControllers.count - 2]
// And go to that Controller
navigationController?.popToViewController(targetController, animated: true)
在我的情况下,我需要支持 2 个控制器,因此,我必须采用堆栈中的第 3 个支持。我真正的解决方案是:
// obtaining origin controller
let controller: UIViewController = navigationController!.viewControllers[navigationController!.viewControllers.count - 2]
// If was the expected controller (An enroll action)
if controller is CreateChatViewController {
// I get the previous controller from it, in this case, the 3rd back in stack
let newControllerTarget = navigationController!.viewControllers[navigationController!.viewControllers.count - 3]
// And finally sends back to desired controller
navigationController?.popToViewController(newControllerTarget, animated: true)
}
【讨论】: