Ios 弹出到初始视图控制器
我目前正在编写一个使用嵌入式NavigationController的应用程序。我需要从嵌入式控制器中弹出第一个视图控制器的初始视图 这行代码只是将我返回到嵌入式navigationController的初始视图: [self.navigationController-popToRootViewControllerAnimated:是]Ios 弹出到初始视图控制器,ios,iphone,objective-c,uinavigationcontroller,popviewcontrolleranimated,Ios,Iphone,Objective C,Uinavigationcontroller,Popviewcontrolleranimated,我目前正在编写一个使用嵌入式NavigationController的应用程序。我需要从嵌入式控制器中弹出第一个视图控制器的初始视图 这行代码只是将我返回到嵌入式navigationController的初始视图: [self.navigationController-popToRootViewControllerAnimated:是] 有什么想法吗?你可以做一些像这样的递归函数。为方便起见,请随意命名或将其作为一个类别 - (void)recursivePop:(UIViewControlle
有什么想法吗?你可以做一些像这样的递归函数。为方便起见,请随意命名或将其作为一个类别
- (void)recursivePop:(UIViewController *)viewController
{
if (viewController.navigationController)
{
[viewController.navigationController popToRootViewControllerAnimated:YES];
[self recursivePop:viewController.navigationController];
}
}
然后,在视图控制器中,您希望通过如下方式调用它
[self recursivePop:self];
Swift版本:
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.navigationController.popToRootViewControllerAnimated:YES];使用[self.navigationController.navigationController poptrootviewcontrolleranimated:YES];UIViewController的navigationController属性返回“视图控制器层次结构中作为导航控制器的最近祖先”。看起来您有两个导航控制器,一个是另一个的子控制器。您认为这可以通过使用self.recursivePop(split)替换splitcontroller部分的内部来简化吗