我目前正在编写一个使用嵌入式导航控制器的应用程序。我需要从嵌入的一个弹出到第一个视图控制器的初始视图。弹出到初始视图控制器
这行代码只是返回我到嵌入式navigationController的初始视图:
[self.navigationController popToRootViewControllerAnimated:YES];
任何想法?
我目前正在编写一个使用嵌入式导航控制器的应用程序。我需要从嵌入的一个弹出到第一个视图控制器的初始视图。弹出到初始视图控制器
这行代码只是返回我到嵌入式navigationController的初始视图:
[self.navigationController popToRootViewControllerAnimated:YES];
任何想法?
你可以做一些这样的递归函数。为了方便起见,请将其命名为任何类别或将其作为类别。
- (void)recursivePop:(UIViewController *)viewController
{
if (viewController.navigationController)
{
[viewController.navigationController popToRootViewControllerAnimated:YES];
[self recursivePop:viewController.navigationController];
}
}
然后在视图控制器中,你想调用它,就像这样调用它。
[self recursivePop:self];
斯威夫特版本:
func recursivePop(controller: UIViewController?){
if let controller = controller {
if let nav:UINavigationController = controller.navigationController {
nav.popToRootViewControllerAnimated(true)
self.recursivePop(controller)
}
if let split:UISplitViewController = controller.splitViewController {
if let nav:UINavigationController = split.navigationController {
nav.popToRootViewControllerAnimated(true)
self.recursivePop(controller)
}
}
}
}
认为这可以通过用self.recursivePop(split)替换splitcontroller部分的内部来简化。 – GregP
你能告诉应用程序,你的等级和你在哪里要弹出? – KudoCC
如果算出来。我刚刚更换了 [self.navigationController。 popToRootViewControllerAnimated:YES]; 与 [self.navigationController.navigationController popToRootViewControllerAnimated:YES]; – user3250926
UIViewController的navigationController属性返回“作为导航控制器的视图控制器层次结构中最近的祖先”。看来你有两个导航控制器,一个是另一个的子控制器。 – KudoCC