iOS --- 在NSObject子类的执行代码中实现UIViewController的跳转
来源:互联网 发布:mysql #什么意思 编辑:程序博客网 时间:2024/04/30 18:14
在iOS开发中, 要实现UIViewController之间的跳转,通过navigationController的pushViewController或者UIViewController自身的presentViewController的方式即可。但要求是从一个UIViewController跳到另外一个UIViewController中。如果要从NSObject子类的执行代码中做跳转至UIViewController的操作, 要如何实现呢?
首先, 说明下为何会有这样的需求, 即: UICollectionView -> NSObjectSubclass -> UIViewController:
设置UICollectionView的datasource和delegate为一个NSObject的子类, 用于处理所有跟UICollectionView的datasource和delegate相关的逻辑关系. 那么在该类的执行代码中可能有调转到另一个UIViewController的使用场景. 此时, 不能使用pushViewController, 因self根本就没有navigationController属性;也不能使用presentViewController, self不是UIViewController的子类。
解决方式可以考虑一下两种:
delegate的方式
delegate是iOS中非常常见的方法. 设置UICollectionView的xxxDelegate为该NSObjectSubclass, 实现其中的方法xxxDelegateMethod1, 然后在NSObjectSubclass的执行代码中调用xxxDelegate的xxxDelegateMethod1方法. 该方法的实现在UICollectionView(包含navigationController属性)中, 因此在其中可以实现UIViewController之间的正常跳转.
rootViewController
在NSObjectSubclass的执行代码中, 先获取当前的rootViewController, 在做UIViewController之间的跳转:
UIViewController *rootViewController = [[[UIApplication sharedApplication] keyWindow] rootViewController];[rootViewController presentViewController:filterCourseViewController animated:NO completion:nil];
最终, 要实现UIViewController之间的跳转, pushViewController或presentViewController的执行代码所处的类self必须要有navigationController属性, 或者必须是UIViewController的子类.
- iOS --- 在NSObject子类的执行代码中实现UIViewController的跳转
- iOS 在NSObject子类的执行代码中实现UIViewController的跳转
- iOS 在NSObject的子类中使用UIAlertController
- iOS: NSObject中执行Selector的相关方法
- IOS ORM简单实现方案:NSObject及其子类与字典的转换
- 纯代码实现布局的UIViewController跳转到带storyboard布局的UIViewController
- IOS 不同的 UIViewController 之间如何跳转
- iOS中id与NSObject* 和id<NSObject>的区别
- iOS中id与NSObject* 和id<NSObject>的区别
- iOS中id与NSObject* 和id<NSObject>的区别
- iOS中id与NSObject* 和id<NSObject>的区别
- iOS中id与NSObject* 和id<NSObject>的区别
- IOS学习:在一个UIViewController中实现侧边菜单的思路及demo
- UIViewController的iOS程序执行顺序
- UIViewController的iOS程序执行顺序
- IOS中UIViewController的生命周期
- iOS之浅谈纯代码控制UIViewController视图控制器跳转界面的几种方法
- iOS之浅谈纯代码控制UIViewController视图控制器跳转界面的几种方法
- def文件 导出dll重载函数
- j2ee项目使用log4j
- dynamic_cast<>运算符
- Android之SharedPreferences详解
- cocos2dx 45度Staggered格式A*寻路 曼哈顿算法(待优化)
- iOS --- 在NSObject子类的执行代码中实现UIViewController的跳转
- HTML的<meta />标签
- Cocos2dx_Lua中table如何安全移除元素
- iPhone/iPad开发模拟器(Simulator)截屏
- 设置VMware随系统开机自动启动并引导虚拟机操作系统
- div嵌套时背景图片不显示问题解决方法总结
- PHP采集利器 Snoopy 试用心得
- 单独的刷新验证码的方法
- POJ - 3905 Perfect Election(2-SAT)