如何将 segue doing pop 设置为 root 并在情节提要中推送一个新的?
How to set segue doing pop to root and push a new one in storyboard?
我想制作一个使导航控制器 poptoroot 的 segue,然后将一个新控制器推入导航控制器。
例如现在控制器层次结构是
navigationController->rootcontroller->controllerA ->controllerB
我想在控制器 B 中进行 segue perfome,并且 segue 将使层次结构变为
navigationController->rootcontroller-> controllerC
这可能吗?
你可以使用for循环弹出到root或者你想要的地方,然后用同样的方法向前推进:
// 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;
}
}
您想将执行 pop 的 segue 设置为 root。这可以使用 Unwind Segues
来实现。有关此的更多详细信息,您可以遵循此 Apple
文档。
要推送到新的VC,你可以简单地推送故事板。
这段代码对我有用:
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!
我想制作一个使导航控制器 poptoroot 的 segue,然后将一个新控制器推入导航控制器。 例如现在控制器层次结构是
navigationController->rootcontroller->controllerA ->controllerB
我想在控制器 B 中进行 segue perfome,并且 segue 将使层次结构变为
navigationController->rootcontroller-> controllerC
这可能吗?
你可以使用for循环弹出到root或者你想要的地方,然后用同样的方法向前推进:
// 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;
}
}
您想将执行 pop 的 segue 设置为 root。这可以使用 Unwind Segues
来实现。有关此的更多详细信息,您可以遵循此 Apple
文档。
要推送到新的VC,你可以简单地推送故事板。
这段代码对我有用:
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!