iOS 如何pop到指定页面
2016-08-02 11:06
676 查看
当我们做app的时候有时候会遇到这样的需求,根视图是A一个“个人信息” 页面,点击头像会push到“个人详细信息”的B页面,当我们点击某一个详细的信息进行修改时会push到“修改信息”的C页面(或者会有详细的地区选择的D、E、F等等)。修改后我们需要Pop到B视图,然而苹果给我们提供的有两种方法
1、推出到根视图控制器
[objc] view
plain copy
- (nullable NSArray<__kindof UIViewController *> *)popToRootViewControllerAnimated:(BOOL)animated;
2、推出到指定的视图控制器
[objc] view
plain copy
- (nullable NSArray<__kindof UIViewController *> *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated;
然而当我们直接用第二种方法时系统会“崩溃”,提示
[objc] view
plain copy
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Tried to pop to a view controller that doesn't exist.'
pop推出的视图控制器并不存在,那么我们该如何使用呢?
栈是一种先进后出的概念,压栈情况下,越级释放.
NSArray *temArray = self.navigationController.viewControllers;
for(UIViewController *temVC in temArray)
{
if ([temVC isKindOfClass:[xxxVC Class]])
{
[self.navigationController popToViewController:temVC animated:YES];
}
}
[objc] view
plain copy
for (UIViewController *controller in self.navigationController.viewControllers) {
if ([controller isKindOfClass:[ReviseUserInformationViewController class]]) {
ReviseUserInformationViewController *revise =(ReviseUserInformationViewController *)controller;
[self.navigationController popToViewController:revise animated:YES];
}
}
压入栈了,那我们就可以在栈内查找
1、推出到根视图控制器
[objc] view
plain copy
- (nullable NSArray<__kindof UIViewController *> *)popToRootViewControllerAnimated:(BOOL)animated;
2、推出到指定的视图控制器
[objc] view
plain copy
- (nullable NSArray<__kindof UIViewController *> *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated;
然而当我们直接用第二种方法时系统会“崩溃”,提示
[objc] view
plain copy
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Tried to pop to a view controller that doesn't exist.'
pop推出的视图控制器并不存在,那么我们该如何使用呢?
栈是一种先进后出的概念,压栈情况下,越级释放.
NSArray *temArray = self.navigationController.viewControllers;
for(UIViewController *temVC in temArray)
{
if ([temVC isKindOfClass:[xxxVC Class]])
{
[self.navigationController popToViewController:temVC animated:YES];
}
}
[objc] view
plain copy
for (UIViewController *controller in self.navigationController.viewControllers) {
if ([controller isKindOfClass:[ReviseUserInformationViewController class]]) {
ReviseUserInformationViewController *revise =(ReviseUserInformationViewController *)controller;
[self.navigationController popToViewController:revise animated:YES];
}
}
压入栈了,那我们就可以在栈内查找
相关文章推荐
- iOS 如何返回(pop)到指定页面
- iOS 如何pop到指定页面
- iOS 如何pop到指定页面
- iOS 如何pop到指定页面
- IOS pop至指定页面 --- IOS isKindOfClass 和 isMemberOfClass 的区别
- iOS端-友盟推送如何跳转到指定页面
- iOS pop至指定页面
- [置顶] iOS如何指定某个页面可以旋转屏幕,其余控制器都正常竖屏
- iOS 点击远程通知消息,如何跳转到指定页面(控制器)
- ios开发之--pop到指定页面
- iOS 导航返回到指定页面、一次返回到根试图或者让它一次性pop出几个页面
- 如何让self.navigationController退出到指定页面,或者让它一次性pop出两个页面popViewControllerAnimated没有
- iOS pop到指定的页面
- 如何Pop回到指定的页面
- 如何在ASP.NET下遍历指定页面上所有控件
- DEDE单页面模板如何指定其他风格文件?
- 如何点击链接直接跳转到app store指定应用下载页面
- 如何使页面中的INPUT按指定的顺序移动焦点{转}
- 如何使页面中的INPUT按指定的顺序移动焦点
- 如何在JS中判断页面上是否存在指定控件