首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CollectionView `DidSelect`方法正在被调用,但没有推送下一个VC,如何修复?

要修复CollectionView DidSelect方法正在被调用,但没有推送下一个VC的问题,可以按照以下步骤进行排查和修复:

  1. 确保导航控制器存在:首先,确保当前视图控制器(包含CollectionView)是由导航控制器管理的。导航控制器负责推送和管理视图控制器的堆栈。如果没有导航控制器,可以通过以下代码将当前视图控制器包装在导航控制器中:
代码语言:txt
复制
let navigationController = UINavigationController(rootViewController: yourViewController)
  1. 检查是否正确设置了代理:确保CollectionView的代理已正确设置,并且代理对象是当前视图控制器。在当前视图控制器的viewDidLoad方法中,添加以下代码:
代码语言:txt
复制
collectionView.delegate = self

并确保当前视图控制器遵循了UICollectionViewDelegate协议。

  1. 检查是否正确实现了DidSelect方法:确保在当前视图控制器中实现了collectionView(_:didSelectItemAt:)方法,并在该方法中执行推送下一个视图控制器的操作。例如:
代码语言:txt
复制
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    let nextViewController = NextViewController()
    navigationController?.pushViewController(nextViewController, animated: true)
}
  1. 检查是否正确设置了CollectionView的选中交互:确保CollectionView的allowsSelection属性设置为true,以允许用户进行选中操作。在当前视图控制器的viewDidLoad方法中,添加以下代码:
代码语言:txt
复制
collectionView.allowsSelection = true
  1. 检查是否正确设置了CollectionView的数据源:确保CollectionView的数据源已正确设置,并且数据源对象是当前视图控制器。在当前视图控制器的viewDidLoad方法中,添加以下代码:
代码语言:txt
复制
collectionView.dataSource = self

并确保当前视图控制器遵循了UICollectionViewDataSource协议。

  1. 检查是否正确注册了CollectionView的Cell:如果使用自定义的CollectionViewCell,确保在当前视图控制器的viewDidLoad方法中注册了该Cell。例如:
代码语言:txt
复制
collectionView.register(YourCustomCell.self, forCellWithReuseIdentifier: "YourCustomCellIdentifier")
  1. 检查是否正确设置了CollectionView的布局:如果使用自定义的布局,确保在当前视图控制器的viewDidLoad方法中设置了CollectionView的布局。例如:
代码语言:txt
复制
let layout = UICollectionViewFlowLayout()
collectionView.collectionViewLayout = layout

通过以上步骤的排查和修复,应该能够解决CollectionView DidSelect方法没有推送下一个VC的问题。如果问题仍然存在,可能需要进一步检查其他相关代码或提供更多的上下文信息来进行排查。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Swift 项目 - Xib | StoryBoard 多人协作技巧

那么反过来说,如何使用Storyboard才不算滥用? 避免滥用,最好的方法就是定制规范,就好像代码中的诸多规范一样。...通过 Container View 创建的ChildViewController如何与主ViewController传参或互相调用?...上拖入多个Object,并绑定不同的模块控制类,相对于占位的Container View和ChildViewController方法,Object方法在传参或互相调用方面,更加简便。...缺点是没有ChildViewController的生命周期方法,如需使用viewWillAppear等,需要在主ViewController的viewWillAppear中,调用Object的自定义方法...这个问题看起来好像是那么回事,StoryBoard 和 Xib本质上是XML,要解析成视图就需要反序列化,必然没有直接代码创建速度高,这只是感觉上,实际上有多少影响呢?

2K20
  • 抛弃UITableView,让所有列表页不再难构建

    下面我将以第三人称的叙述方式,通过一个例子比较传统实现和最新实现的手段说明如何让列表页不再难构建。...产品经理还要求内容默认显示一行,超过省略号表示,点击上去再全部显示,小明想这也容易,在FeedCellModel中加一个表示是否展开的bool量isExpand,然后didSelect代理方法中改变这个值并且...貌似好一点,设置好与上下视图的约束,根据有没有图片设置隐藏,在FeedCellModel里面根据图片数量重新计算一下高度,这样好像也能完成,改动的地方还能接受(可是笔者已经无法接受了,所以此处没有示例代码...那么现在该如何去做,我们直接新增一个FavorCell,和对应的一个FavorSectionController,根本不需要碰原有运行良好的代码。...Feed } } 这里把点击commentCell的删除按钮事件代理出来给CommentSectionController处理,在闭包里先对cellModels数组删除,然后调用IGListKit

    1.6K30

    添加多个屏幕-创建格线布局

    在上一节中,我们学习了如何使用按钮更改iPhone的屏幕。让我们进一步推动!我们将实现一个CollectionView,我们将能够切换到您想要的壁纸。该的CollectionView将是滚动的水平。...使用Command + R运行代码,然后修复2个错误。它将为您提供运行CollectionView所需的两种方法。 Sections中的项数和 Cell 在第一个函数内部,我们只需返回3。...screenImageButtonTapped() 委托 现在返回DialogViewController,创建一个新扩展并调用委托。然后,尝试运行代码,它会自动为您提供缺少的方法。...运行该应用程序以修复缺少的方法。...我们学到了很多关于如何实现Collection View的知识。我们还学会了如何委派。这是ARKit 2扩展的结束,我们已经走了很长的路!我希望你喜欢这门课程!

    2.9K40

    iOS流布局UICollectionView系列四——自定义FlowLayout进行瀑布流布局

    自定义FlowLayout进行瀑布流布局 一、引言         前几篇博客从UICollectionView的基础应用到设置UICollectionViewFlowLayout更加灵活的进行布局,都限制在系统为我们准备好的布局框架中...总之,FlowLayout类将每个item的位置等布局信息放在一个数组中,在collectionView布局时,会调用FlowLayout类layoutAttributesForElementsInRect...因此,我们需要重写这个方法,返回我们自定义的配置数组,另外,FlowLayout类在进行布局之前,会调用prepareLayout方法,所以我们可以重写这个方法,在里面对我们的自定义配置数据进行一些设置...} //数组的相关设置在这个方法中 //布局前的准备会调用这个方法 -(void)prepareLayout{     _attributeAttay = [[NSMutableArray alloc...(NSString *)decorationViewKind withIndexPath:(NSIndexPath *)indexPath; 通过上面的属性,可以布局出各式各样的炫酷效果,正如一句话:没有做不到

    3K20

    iOS初步集成极光推送后你还要做这些事

    当我们把推送证书配置好再把极光SDK拖入项目配置,然后注册极光推送,完成代理,这样没有太多意外你就能收到消息了,但是我们都知道还需要做一些处理,都是哪些呢?...我个人没有总结太多,肯定有缺失,这里只是给不知道的伙伴列举一些常见的。若有误,请指出。 ○ 当收到消息时,app在前台如何处理?如何跳转?...○在后台收到消息如何处理?如何跳转? 当你在后台,收到消息,通知栏会弹出一个系统alert,一旦你点击了这个alert,目标app会被唤起,同时调用下面代理函数。...○未启动时受到消息如何处理?如何跳转 这种情况是最不容易找到的,因为当你的应用未启动,点击了通知栏,它没有调用任何极光的代理,这时候需要我们去启动函数进行判断。...; } } 我把以上方法独立出来。方法都有注释,不再讲解。那么,这时候我仅仅需要在合适的位置调用这些方法即可! 例如。

    2.8K50

    Swift 探索 UICollectionView 之 SupplementaryView 和 Decoration View

    如果你的产品经理给你提了一个需求,要求你要为 UICollectionView 的 section 设置背景, 当你查阅文档的时候,你就会发现 UICollectionView 是无法通过属性设置来为...在接下来的内容中,你将会学到以下知识点: 1.如何在 UICollectionView 中创建 Decoration View2.自定义布局属性,计算 section 的背景图位置和大小3.实现 UICollectionView...cancelInteractiveMovement() 它们代表的意思分别为: •开始交互•更新交互位置•结束交互•取消交互 在为 UICollectionView 添加手势后,根据手势提供的三种状态,分别调用上面的四个方法...当我真正的去整理它的一些技术点时,我发现它实在是太灵活了,以前觉得追加视图,装饰视图这些东西很简单,几行代码的事情,事实上,当你想要去实现一些高度自定义的界面的时候,你才会认识到自己的不足,你并没有对这些知识有更深层次的认知...,只有再你自己慢慢实现后,你内心才会感慨 "哦, 原来这些 API 可以这样调用,原来这个东西是这样的啊"。

    2K10

    iOS - 开发1年后对MVC新的理解

    导致了VC的沉重 @end 问题来了回到工程项目需求,每个cell都有增加减少按钮 而且需要有选中效果在View层.意味着MVC架构模式中 我在View层对Model进行了修改....再者Action操作视图逻辑代码是放在C层或V层 最终导致C层随着需求会慢慢变大变臃肿 再回过头来看项目工程目录导致VC过重的原因因素 ·繁重的UI 例如tableView CollectionView...temArray.count; i++) { Model *m = [Model modelWithDictionary:temArray[i]]; [self.dataArray addObject:m]; } 通常的...Cell : UITableViewCell @property (nonatomic, strong) Model *model; @end @implementation Cell 但是外界数据模型没有一起变化...架构 (Model和UI之间的消息通讯方式) 在上面我们把DataSource麻烦的代码交给了封装的DataSource类中,但是还剩下一个Delegate代理没解决 MVC (最快上手架构) MV-Protocal

    1.2K71

    Swift多线程之Operation:异步加载CollectionView图片1. Operation 设置依赖关系2. 前置知识点内容3. CollectionView中图片进行异步加载

    其实一看就明白,这四个操作是有先后顺序的,假如所有的操作都是多线程,咱们怎么控制顺序? 通过设置“优先级”?NO!优先级没有办法干这个事情。要是觉得设置优先级可以实现的,请回去看看俺上一篇文章。...start: 所有并行的 Operations 都必须重写这个方法,然后在想要执行的线程中手动调用这个方法。注意:任何时候都不能调用父类的start方法。 main: 可选的。...只给了get方法没有给set方法。所以没有办法直接使用这个属性。 2.1.3 取消操作的说明 operation不是说把属性isCancelled设置一下就好了。...map方法会遍历调用者,对数组中的每一个元素执行闭包中定义的操作。 咱们newArray执行的操作就是把testNumberArray数组中每一个元素都加了2。...元组可以与Switch大牌进行复杂条件的判断;可以作为方法的返回值,来返回多个数值;可以假装成结构体使用; 3. CollectionView中图片进行异步加载 来看一下思维导图: ?

    1.4K70

    【iOS开发】iOS路由引入及遇到的问题

    做一个热修复接口的话,可以将指定的路由更改指向(例如指向web端),可以达到热修复的效果。 做统一的错误处理页面。 ......缺点 不能一个url对应到一个vc(缺点?) 不能做参数检查 打开路由的时候,要在url里面带上vc的名字,给中间件反射用,如果修改了类名,调用的地方就得改。 不能取消注册 不好跟其它平台做统一。...解决方法是,给Router添加一个拦截器接口。pushURL的时候可以传一个拦截器,拦截器里面就一个方法。...id=234 运营配的URL千奇百怪,有时候版本上线了,发现某个url没有拦截到。坑好深。...而且调用的参数也没有直接调用来得直观、明确。参数也不好以对象的形式传递。 路由的主要作用应该是解耦,但是如果不组件化,还是会存在各种各样的耦合。耦合太多的话,会增加测试的难度。

    1.7K30

    【百度】一面总结(含答案)

    二进制重排 1.1 clang 插桩具体如何做的 1.2 c++ 方法 clang 插桩能否取到?...不能 可以取到 c 函数,oc 方法,block,swift 方法 但是可以用 -finstrument-functions 在编译期插桩 “hook”,或者使用并不完美成本最低的静态扫描方案。...比如检查新版本、注册推送通知等逻辑。 避免复杂/多余的计算。...-initWithCoder: 通过 storyBoard 方式实例化的 vc,需要经过反序列化,这个方法会被调用 -initWithNibName:bundle: 通过 xib 文件或者 init 方法实例化的...vc,这个方法都会被调用,其实 init 方法最终都会走该方法 -init: 通过纯代码实例化Vc调用,其最终会调用 initWithNibName:bundle: 方法 -loadView: 实例化

    52030

    iOS 无侵入埋点组件总结

    2.1 实现可视化埋点核心问题 封装埋点组件,降低耦合 如何实现后台配置唯一标识 埋点上报 2.2 针对第一个问题想到的方案如下: 每个业务页面添加一个埋点类,单独将埋点的方法提取到这个类中。...3.2 技术原理 3.2.1 Method-Swizzling OC 中的方法调用其实是向一个对象发送消息 ,利用 OC 的动态性可以实现方法的交换。...检测其有没有实现对应的点击代理,因为 tableView:didSelectRowAtIndexPath: 及 collectionView:didSelectItemAtIndexPath: 是 option...method_exchangeImplementations 进行交换,当原方法调用时,就会 hook 到指定的新方法去执行。...,仍存在很多问题,比如唯一标识难以维护、准确性有待验证。

    2.9K31
    领券