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

本文探讨了在iOS开发中,当需要从一个NSObject子类的代码中跳转到UIViewController时的解决方案。由于直接使用pushViewController或presentViewController在非UIViewController对象中不可行,提出了两种方法:1) 使用delegate,将UICollectionView的代理设为NSObject子类,并在代理方法中处理跳转;2) 获取当前的rootViewController进行跳转操作。这两种方法确保了在不违反对象职责边界的情况下完成UIViewController间的导航。
摘要由CSDN通过智能技术生成

在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

在NSObje

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值