码迷,mamicode.com
首页 > 移动开发 > 详细

iOS --- 在NSObject子类的执行代码中实现UIViewController的跳转

时间:2015-09-10 14:27:57      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:ios   uiviewcontroller   跳转   

在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   uiviewcontroller   跳转   

原文地址:http://blog.csdn.net/icetime17/article/details/48322203

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!