关于POP

作者: 逆夏的夏天0 | 来源:发表于2018-11-14 14:09 被阅读0次

POP 比较常见的是在本导航栏之内的POP。其实POP只要是app内的视图都可以POP到下面就是从设置页面POP回登录页面,简单说下结构,首先是window.rootViewController上建立一个导航栏也就是登录视图控制器,然后再建TabBarViewController,其上有4个导航栏视图控制器。

下面是正确的POP方式

  NavigationBaseViewController *navi = (NavigationBaseViewController *)[UIApplication sharedApplication].delegate.window.rootViewController;

            for (UIViewController *obj in navi.viewControllers) {

                if([objisKindOfClass:[LoginViewController class]]) {

                    [navi  popToViewController:objanimated:YES];

                }

            }

        }

对比下常用的方法

for(UIViewController*controller in self.navigationController.viewControllers) {

if([controller isKindOfClass:[LoginViewController class]]) {

AViewController*A =(AViewController*)controller; 

 [self.navigationController popToViewController:A animated:YES];

 } 

    }

这个方法去POP 是POP不到登录页的,因为这里的self.navigationController.viewControllers 数组里面只有 我的页面和设置页面的视图控制器。

所以这个方法的关键在于2点 

1 找到包含你想要的视图控制器的数组    上面例子就是要找到包含LoginViewController 的数组

2 找到你想要控制器所在的导航栏控制器   上面例子就是要找到包含LoginViewController 的导航栏控制器

需要注意的是:如果是自定义的导航栏控制器,需要去找自定义数组存放的地方。

上面的例子:由于登录页是window根视图上的自定义的导航栏,所以需要找到root view然后强制转换找到导航栏的控制器。

附上一个 跳转到指定tabBar界面的方法原文链接

第一次写,不太会。初衷更多是作为自己的笔记用。

相关文章

网友评论

      本文标题:关于POP

      本文链接:https://www.haomeiwen.com/subject/qmkpuxtx.html