导航通过类名返回指定页面
发布日期:2022-04-05 00:52:15
浏览次数:2
分类:博客文章
本文共 1860 字,大约阅读时间需要 6 分钟。
项目中我们经常会用到导航,常见的问题就是返回到指定的页面,但是系统的方法是需要传入一个对象,如何通过类名来返回指定页面呢?
- (nullable NSArray<__kindof UIViewController *> *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated; // Pops view controllers until the one specified is on top. Returns the popped controllers.
原理:利用UINavigationController的viewControllers属性,循环查找,再跳转指定对象
@property(nonatomic,copy) NSArray<__kindof UIViewController *> *viewControllers; // The current view controller stack.
有下面三种情况需要考虑
A、栈里是不同的类创建的对象
B、在栈里有同一个类创建的两个对象,返回到先创建的对象
C、在栈里有同一个类创建的两个对象,返回到后创建的对象
话不多说直接上代码
- (void)popToViewControllerClass:(Class) targetClass{ if ([targetClass respondsToSelector:@selector(alloc)]){ UINavigationController* navC = (UINavigationController*)([self isKindOfClass:UINavigationController.class] ? self : self.navigationController); // A&B// for (UIViewController *vc in navC.viewControllers){// if ([vc isKindOfClass:targetClass]){// [navC popToViewController:vc animated:YES];// return;// }// } // C// 1、 倒叙数组+forin循环 // NSArray<__kindof UIViewController *> *reversStackArray = [[navC.viewControllers reverseObjectEnumerator] allObjects]; // for (UIViewController *vc in reversStackArray){ // if ([vc isKindOfClass:targetClass]){ // [navC popToViewController:vc animated:YES]; // return; // } // } // 2、 枚举器+while循环 NSEnumerator *enumerator = [navC.viewControllers reverseObjectEnumerator]; id obj = nil; while (obj = [enumerator nextObject]) { if ([obj isKindOfClass:targetClass]){ [navC popToViewController:obj animated:YES]; return; } } }}
转载地址:https://www.cnblogs.com/lijianyi/p/13186697.html 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年03月13日 02时43分59秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
mysql redis缓存层_redis实现缓存的两种方式
2019-04-21
git 改local branch名字_用Git管理Latex写论文的工作流程
2019-04-21
mysql索引篇_MySQL索引篇
2019-04-21
有至少一个用MySQL_Mysql有用的面试题
2019-04-21
mysql select同时update_MySQLSELECT同时UPDATE同一张表
2019-04-21
mysql删除后数据库没变化_mysql之delete删除记录后数据库大小不变
2019-04-21
python问题描述怎么写_python写文件有时候写不进去怎么办
2019-04-21
qpython3安装lxml_在python的lxml中使用xml目录?
2019-04-21
java 幂取模_快速幂取模算法
2019-04-21
java上传下载源码_javaweb简单实现文件上传与下载源代码
2019-04-21
java控制热敏打印机的例子.rar_stm32控制热敏打印机
2019-04-21
java clone equals_(原)java中对象复制、==、equals
2019-04-21
java滚动字幕实训报告_Java实习报告 (7000字).doc
2019-04-21
计算机二级java技巧,计算机二级报java难考吗
2019-04-21