如何将 segue do pop 设置为根并在故事板中推送一个新的?



我想做一个segue,让导航控制器poptoroot,然后把一个新的控制器推入导航控制器。 例如,现在控制器层次结构是

navigationController->rootcontroller->controllerA ->controllerB

我想在控制器 B 中制作一个 segue 性能,并且 segue 将使层次结构

navigationController->rootcontroller-> controllerC

这可能吗?

你想把 segue do pop 设置为根。这可以使用Unwind Segues来实现。有关此内容的更多详细信息,您可以按照此Apple文档进行操作。

https://developer.apple.com/library/content/technotes/tn2298/_index.html#//apple_ref/doc/uid/DTS40013591-CH1-TNTAG2-ADDING_AN_UNWIND_SEGUE_TO_A_STORYBOARD

要推送到新的 VC,只需推送到情节提要即可。

您可以使用for 循环弹出直到根或您想要的位置,并使用相同的方法向前推进:

// For Pop
NSArray *viewControllers = [[self navigationController] viewControllers];
for( int i=0;i<[viewControllers count];i++){
id obj=[viewControllers objectAtIndex:i];
if([obj isKindOfClass:[ViewControllerYouWantToStopOn class]]){
[[self navigationController] popToViewController:obj animated:YES];
return;
}
}
//For Push
NSArray *viewControllers = [[self navigationController] viewControllers];
for( int i=0;i<[viewControllers count];i++){
id obj=[viewControllers objectAtIndex:i];
if([obj isKindOfClass:[ViewControllerYouWantToJumpOn class]]){
[[self navigationController] pushViewController:obj animated:YES];
return;
}
}

这段代码对我有用:

self.performSegue(withIdentifier: "segue_id", sender: self)
var navigationArray = self.navigationController?.viewControllers
var i = navigationArray!.count - 2
while i > 0 {
navigationArray!.remove(at: i)
i = i - 1
}
self.navigationController?.viewControllers = navigationArray!

最新更新