重新加载集合视图数据时对成员 'collectionView(_:numberOfItemsInSection:)' 的模糊引用

Posted

技术标签:

【中文标题】重新加载集合视图数据时对成员 \'collectionView(_:numberOfItemsInSection:)\' 的模糊引用【英文标题】:Ambiguous reference to member 'collectionView(_:numberOfItemsInSection:)' when reloading collection view data重新加载集合视图数据时对成员 'collectionView(_:numberOfItemsInSection:)' 的模糊引用 【发布时间】:2016-10-29 20:00:28 【问题描述】:

在我一直在编写的一个应用程序中,其中一个选项卡包含一个集合视图,该视图最初填充了虚拟信息,但一旦用户在另一个选项卡中输入一些信息就应该被替换。但是,当我尝试使用 self.collectionView?.reloadData() Xcode 时说 Ambiguous reference to member 'collectionView(_:numberOfItemsInSection:)' 。删除了与获取插槽数据相关的代码。这里有人知道为什么它不起作用吗?

//
//  FirstViewController.swift
import UIKit
import Alamofire

class FirstViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate 
    let reuseIdentifier = "cell" // also enter this string as the cell identifier in the storyboard
    var items = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48"]


override func didReceiveMemoryWarning() 
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
    self.collectionView?.reloadData()



// MARK: - UICollectionViewDataSource protocol

// tell the collection view how many cells to make
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int 
    return self.items.count


// make a cell for each cell index path
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 

    // get a reference to our storyboard cell
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath as IndexPath) as! MyCollectionViewCell

    // Use the outlet in our custom class to get a reference to the UILabel in the cell
    cell.myLabel.text = self.items[indexPath.item]
    cell.backgroundColor = UIColor.white
    cell.layer.borderColor = UIColor.white.cgColor
    cell.layer.borderWidth = 5
    cell.layer.cornerRadius = 8// make cell more visible in our example project

    return cell


// MARK: - UICollectionViewDelegate protocol

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) 
    // handle tap events
    print("You selected cell #\(indexPath.item)!")

【问题讨论】:

FirstViewController 不是 UICollectionViewController 的子类,因此它没有 collectionView 属性。 和这个问题基本一样:***.com/questions/30733126/…. 【参考方案1】:

您使用的是 UIViewController 而不是 UICollectionViewController,因此您无法免费获得 collectionView 属性。您需要从情节提要中拖入一个插座并将其命名为 @IBOutlet var collectionView: UICollectionView!

【讨论】:

我遇到了一个问题,我试图继承一个具有 UIViewController 的类“UIappViewController”,但我的 UICollectionViewController 视图引发了多重继承错误

以上是关于重新加载集合视图数据时对成员 'collectionView(_:numberOfItemsInSection:)' 的模糊引用的主要内容,如果未能解决你的问题,请参考以下文章

从另一个视图类重新加载集合视图数据

tableview 单元格内的集合视图重新加载数据

如何在 UIViewRepresentable SwiftUI 中重新加载集合视图

数据重新加载时 iOS 集合视图上移

如何自动重新加载集合视图?

按返回栏按钮项重新加载集合视图