如果同时在一个画面实作两个UICollectionView

发布于 2022-09-03 12:34:21 字数 3607 浏览 40 评论 0

以下面的程式为例,这是一个可正常执行的的collectionView

class ViewController: UIViewController,UICollectionViewDelegate,UICollectionViewDataSource {
    var m_collectionView:UICollectionView!
    var m_layout:UICollectionViewFlowLayout!
    func refreshWithFrame(frame:CGRect){
        self.view.frame = frame
        self.view.backgroundColor = UIColor.lightGrayColor()
        m_layout = UICollectionViewFlowLayout()
        m_layout.minimumLineSpacing = 1.5
        m_layout.minimumInteritemSpacing = 1
        m_collectionView = UICollectionView(frame: CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height), collectionViewLayout: m_layout)
        m_collectionView.backgroundColor = UIColor.whiteColor()
        m_collectionView.delegate = self
        m_collectionView.dataSource = self
        m_collectionView.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: "TESTCell")
        self.view.addSubview(m_collectionView)
    
    }
    
    func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
        return 1
    }
    
    func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 3
    }
    
    /*func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView {
        var reuseView:UICollectionReusableView!
        reuseView = collectionView.dequeueReusableSupplementaryViewOfKind(UICollectionElementKindSectionHeader, withReuseIdentifier: "TestHeader", forIndexPath: indexPath)
        reuseView.backgroundColor = UIColor.blackColor()
        return reuseView
    } */
    
    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
        var cell = collectionView.dequeueReusableCellWithReuseIdentifier("TESTCell", forIndexPath: indexPath)
                    cell.backgroundColor = UIColor.lightGrayColor()
                return cell
    }
    
    func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
        //返回每个cell的大小
        return CGSize(width: self.view.frame.size.width / 3 - 10, height:100)
    }
    
        
    func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets{
        return UIEdgeInsets(top:0, left: 0, bottom:5, right: 0)
    }
    
    func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
        //Cell点击事件
    }
    
}

下面有几个一针对ColloectionView一定要的func

func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
    return 1
}

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return 3
}

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets{
    return UIEdgeInsets(top:0, left: 0, bottom:5, right: 0)
}

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
    //Cell点击事件
}

我现在 需要2个,A=UIColloectionView(), 跟 B = UICollectionView()

那有关 memberofsectionCollectionview numberOfItemsInSection didSelectItemAtIndexPath
等几个都是不同的,那我该如何去实作两个collectionView呢??
请教各位先进....

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

回眸一笑 2022-09-10 12:34:21

举例说明吧,简单的实现的话,可以类似下面这样:

func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
    if collectionView == A {
        return 1
    } else if collectionView == B {
       return 2 
    }
    return 0
}

复杂的话,也可能需要把 A,B 两个 collection view 的 datasource 和 delegate 都设置为单独的类,不一定都要设置成当前的 view controller 的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文