Closed simpleLiYu closed 2 years ago
我这个方法并没有调用会是什么原因呢
我这个方法并没有调用会是什么原因呢
你好,你可以提供一下你初始化的方法么?
你好,初始化collectionView的时候, 需要设置
collectionView.delegate = self; collectionView.dataSource = self;
内部逻辑才能判断到协议是否实现哦。
设置了这两个的呢
设置了这两个的呢
暂时这里看没发现什么问题。你试试在func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
里 看看collectionViewLayout是什么类型的? 设置了delegate的话,是会走判断的。如果都不行的话,方便告诉一下您的collectionView还集成了哪些其他的第三方的库呢? 我发现在你发的代码中有些方法是原生没有的。
collectionView的话没有继承别的三方库,register那个是SwifterSwift对collectionview注册的一个扩展
collectionView的话没有继承别的三方库,register那个是SwifterSwift对collectionview注册的一个扩展
因为暂时来看,设置了delegate之后,collectionView准备显示时走prepare()判断,按照以上你提供的代码我没看出来问题在哪里呢,如果是这样的话,方便提供一下你的一个demo么。
我知道了,我用了rxswift监听页面滑动导致
这个类型不对
我知道了,我用了rxswift监听页面滑动导致
这个类型不对
我看了我的代码,这个guard let,应该不是我这边判断的,那你的问题找到解决方案了么?
你有这个guard let的, 我把rx的换了。。。就正常了,暂时还不知道别的解决方法
你有这个guard let的, 我把rx的换了。。。就正常了,暂时还不知道别的解决方法
请问你用的版本是哪一个版本呢? 我在现在2.4.0上没有找到以上你发的那个 guard let 哦。
那可能是我改了
那可能是我改了
嗯嗯,应该是您那边修改了,我在我现在最新版本的项目中全局搜索,暂时没找到对应代码。
对,我把几个判断合并了是我改了
对,我把几个判断合并了是我改了
![]()
那如果按照这个情况的话,我 建议不做将
let delegate = collectionView?.delegate as ? JJColletionViewDelegateRoundFliwLayout_Swift
这个判断,然后继续使用rxSwift应该是可以的。
OK,我看看如何适配一下使用Rx后的这个问题。
你好,根据我使用rx,检测collectionView的contentOffset,prepare()时,layout.collectionView.delegate 变成了RxCollectionViewDelegateProxy。我代码上判断是强制拆包,的确不怎么好。 不过如果变成了RxCollectionViewDelegateProxy,根据判断,进行拆包后,RxCollectionViewDelegateProxy 内有forwardToDelegate() 或 _forwardToDelegate 可以获取到真实的delegate,使用真实的delegate就可以继续往下执行了。 我暂时找到的解决方案是这个,不过判断的话有点多,我暂时没在项目中更新,后续看看怎么操作。 现在可以先使用该临时解决方案。
好的,我先按照这样修改下。刚开始弄rx不会
好的,我先按照这样修改下。刚开始弄rx不会
还有一个方案就是,如果觉得以上的判断太麻烦的话,我用rx监测collectionView的contentOffset的时候,只是delegate被改变了,dataSource没有改变,还是真实delegate, 判断如果delegate不对之后用dataSource,我扫描了我的代码,有四处对delegate的判断,分别在flowlayout和utils里面。
如果有什么问题,可以回复,我看看如何解决。