xcode 重新加载集合视图数据时对成员“collectionView(_:numberOfItemsInSection:)”的不明确引用

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/40323153/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-15 09:30:54  来源:igfitidea点击:

Ambiguous reference to member 'collectionView(_:numberOfItemsInSection:)' when reloading collection view data

iosswiftxcodeuicollectionview

提问by Ryan Tremblay

In an app I've been writing, one of the tabs contains a Collection View that is originally filled with dummy information, but is supposed to be replaced once the user inputs some information in another tab. However, when I try to use self.collectionView?.reloadData()Xcode says Ambiguous reference to member 'collectionView(_:numberOfItemsInSection:)'. The code relevant to getting the data for the slots was removed. Does anyone here have any idea why it isn't working?

在我一直在编写的应用程序中,其中一个选项卡包含一个集合视图,该视图最初填充了虚拟信息,但是一旦用户在另一个选项卡中输入了一些信息,就应该被替换。但是,当我尝试使用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)!")
}

}

}

回答by Josh Homann

You are using UIViewControllerand not UICollectionViewControllerso you don't get the collectionViewproperty for free. You need to drag in an outlet form your storyboard and name it @IBOutlet var collectionView: UICollectionView!.

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