具有多个单元格模板的 CollectionView(使用未声明的类型,<typeName> 在此上下文中的类型查找不明确)

Posted

技术标签:

【中文标题】具有多个单元格模板的 CollectionView(使用未声明的类型,<typeName> 在此上下文中的类型查找不明确)【英文标题】:CollectionView with multiple cell templates (use of undeclared type, <typeName> is ambiguous for type lookup in this context) 【发布时间】:2018-08-05 10:59:33 【问题描述】:

在我的一个集合视图中,我必须为不同的部分使用两个单元格模板。对于这两个单元格,我使用 .xib 文件。我有两个自定义类: OverprintsCollectionViewCellOverprintsCollectionViewDetailCell

在上述集合视图所在的视图控制器中,``我使用节索引来决定使用哪个模板。代码如下所示:

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 

    if collectionView is OverprintsCollectionView 

        if indexPath.section == 0 
            if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "twoLblCell", for: indexPath) as? OverprintsCollectionViewCell 

                // Swift compiler message in the line above:  "Use of undeclared type 'OverprintsCollectionViewCell'"

                // cell setup  

                return cell
            
         else if indexPath.section == 1 
            if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "twoLblDetailCell", for: indexPath) as? OverprintsCollectionViewDetailCell 

                // Swift compiler message in the line above:  "'OverprintsCollectionViewDetailCell' is ambiguous for type lookup in this context"

                // cell setup  

                return cell
            
        

    
    return UICollectionViewCell()

尽管有这些错误,应用程序仍能成功构建和运行。 我以前从未使用过包含多个单元格模板的集合视图,我不确定是什么导致了这个问题。

经过一番谷歌搜索后,我检查了一些内容: - 两个文件(OverprintsCollectionViewCell.swiftOverprintsCollectionViewDetailCell.swift)都正确设置了目标

【问题讨论】:

【参考方案1】:

在检查了所有内容(所有标识符、目标等)、清理项目、重新启动 Xcode 之后,实际上有助于删除项目的派生数据。

【讨论】:

以上是关于具有多个单元格模板的 CollectionView(使用未声明的类型,<typeName> 在此上下文中的类型查找不明确)的主要内容,如果未能解决你的问题,请参考以下文章

具有多个单元格的 Collectionview 和 diffable 部分

tableView 单元格内的多个 collectionView 单元格在滚动时更改设计

具有多个部分的 UICollectionView

Swift - 如何在具有多个部分的 collectionView 上执行 BatchUpdates

集合视图具有多个部分的不同单元格高度

多个tableView单元格中的多个collectionView