其中self.needPopViewCpntroller为当前控制器定义的字符串,
Class tagrrVC = NSClassFromString(self.needPopViewCpntroller);
for (UIViewController *controller in self.navigationController.viewControllers) {
if ([controller isKindOfClass:tagrrVC]) {
[self.navigationController popToViewController:controller animated:YES];
break;
}
}
上面代码适用于A-B-C-D,D返回A的多级跳转。
还有另外一种解决方法:
这样做的好处是:当你需要pop到不同的根页面时,可以不需要再末级控制器的地方引用根级的控制器。
.h的地方写上控制器的属性
//定义一个vc,作为末级控制器的属性。最后pop的时候直接pop这个变量就可以。
@property (nonatomic, weak)UIViewController *needPopToVC;
在.m中写上具体需要跳转的实现
if ([self.needPopToVC isKindOfClass:[TKTeacherHomeViewController class]]) {
for (UIViewController *controller in self.navigationController.viewControllers) {
if ([controller isKindOfClass:[self.needPopToVC class]]) {
[self.navigationController popToViewController:controller animated:YES];
break;
}
}
}else
{
for (UIViewController *controller in self.navigationController.viewControllers) {
if ([controller isKindOfClass:[self.needPopToVC class]]) {
[self.navigationController popToViewController:controller animated:YES];
break;
}
}
}
网友评论