iOS NSClassFromString用于多级返回跳转

2018-03-01  本文已影响0人  keyuan0214

其中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;
                     }

                 }
             }
上一篇下一篇

猜你喜欢

热点阅读