提问者:小点点

只在ScrollView Swift内的UICollectionView中委派滚动事件


我有一个abc控制器,包括UIPageViewController和这个控制器,包括3个不同的控制器,连接到标签。

在连接到UIPageViewController的第一个控制器中,有一个CollectionView,它被委托给自己的控制器,我使用UICollectionViewDelegateFlowLayout来塑造单元格。

但是当我将ABCController中的delegate controller更改为它自己时(使同步滚动与主滚动)

函数collectionView(_collectionView:UICollectionView,布局CollectionViewLayout:UICollectionViewLayout,sizeForItemAt IndexPath:IndexPath)->; CGSize

停止工作,因为我将collectionview委托给了另一个控制器。

有什么方法可以将滚动事件委托给另一个控制器吗?

我知道这可能有点复杂,但我希望能找到一种方法。


共1个答案

匿名用户

您可以通过创建一个包装来实现:

class CollectionViewController: UICollectionViewDelegate, UICollectionViewDatasource {
    var scrollDelegate: UIScrollViewDelegate?

    // delegate scroll events
    func scrollViewDidScroll(_ scrollView: UIScrollView) {
       scrollDelegate?.scrollViewDidScroll(scrollView)
    }
    
    // other events
}