iOS-非父子控制器跳转(如:从某一导航控制器的子页面跳转到另一个tabbar控制的页面)
2016-02-02 16:30
465 查看
objective-c版本
一、需要跳转到的页面的上一级页面(EHRDiagnoseListViewController),将其加入数组中,避免返回时返回到当前页面中,造成死循环
//取到当前导航控制器的所有子元素(即子控制器,childControllers)
NSMutableArray *navCtrArray = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];
[navCtrArray removeLastObject]; //移除子元素中倒数第一个控制器
[navCtrArray removeLastObject]; //移除子元素中倒数第二个控制器
//ScanMedicalDetailViewController的上级界面。
EHRDiagnoseListViewController *listCtr
= [[EHRDiagnoseListViewControlleralloc]init];
二、真正需要跳转到的页面(ScanMedicalDetailViewController)
ScanMedicalDetailViewController *scanCtr = [[ScanMedicalDetailViewControlleralloc]init];
[navCtrArray addObject:listCtr]; //将listCtr添加到当前导航控制器的倒数第二个位置
[navCtrArray addObject:scanCtr];//将scanCtr添加到当前导航控制器的最后位置,即栈顶
listCtr.hidesBottomBarWhenPushed=YES;
scanCtr.hidesBottomBarWhenPushed=YES;
[self.navigationController setViewControllers:navCtrArray];
[navCtrArray removeLastObject];
swift版本
let detailVC =
EmrPhotoDetailViewCtr()
var navArray:[UIViewController] = []
for i in0...(self.navigationController?.childViewControllers.count)!-1{
let vc=self.navigationController?.childViewControllers[i]
navArray.append(vc!)
}
navArray.removeLast()
navArray.append(detailVC)
self.navigationController?.setViewControllers(navArray, animated:true)
一、需要跳转到的页面的上一级页面(EHRDiagnoseListViewController),将其加入数组中,避免返回时返回到当前页面中,造成死循环
//取到当前导航控制器的所有子元素(即子控制器,childControllers)
NSMutableArray *navCtrArray = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];
[navCtrArray removeLastObject]; //移除子元素中倒数第一个控制器
[navCtrArray removeLastObject]; //移除子元素中倒数第二个控制器
//ScanMedicalDetailViewController的上级界面。
EHRDiagnoseListViewController *listCtr
= [[EHRDiagnoseListViewControlleralloc]init];
二、真正需要跳转到的页面(ScanMedicalDetailViewController)
ScanMedicalDetailViewController *scanCtr = [[ScanMedicalDetailViewControlleralloc]init];
[navCtrArray addObject:listCtr]; //将listCtr添加到当前导航控制器的倒数第二个位置
[navCtrArray addObject:scanCtr];//将scanCtr添加到当前导航控制器的最后位置,即栈顶
listCtr.hidesBottomBarWhenPushed=YES;
scanCtr.hidesBottomBarWhenPushed=YES;
[self.navigationController setViewControllers:navCtrArray];
[navCtrArray removeLastObject];
swift版本
let detailVC =
EmrPhotoDetailViewCtr()
var navArray:[UIViewController] = []
for i in0...(self.navigationController?.childViewControllers.count)!-1{
let vc=self.navigationController?.childViewControllers[i]
navArray.append(vc!)
}
navArray.removeLast()
navArray.append(detailVC)
self.navigationController?.setViewControllers(navArray, animated:true)
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- ThinkPHP控制器详解
- ASP.NET Web API教程 创建Admin控制器实例分享
- 讲解iOS开发中基本的定位功能实现
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法
- C# 如何在MVC3中取消备用控制器的选择
- .net平台推送ios消息的实现方法
- ThinkPHP控制器里javascript代码不能执行的解决方法
- thinkphp控制器调度使用示例
- ThinkPHP中URL路径访问与模块控制器之间的关系
- 探讨Android与iOS,我们将何去何从?