我目前正在編寫一個使用嵌入式導航控制器的應用程序。我需要從嵌入的一個彈出到第一個視圖控制器的初始視圖。彈出到初始視圖控制器
這行代碼只是返回我到嵌入式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