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界面的方法原文链接
第一次写,不太会。初衷更多是作为自己的笔记用。
网友评论