还有一个"无法出现类型的观点:UICollectionElementKindCell与标识符歌曲"

时间:2017-06-20 04:20:02

标签: ios swift uicollectionview uicollectionviewcell

我收到了经典消息"无法将种类视图出列:UICollectionElementKindCell带有标识符歌曲"。我不知道为什么。

  

***由于未捕获的异常终止应用程序' NSInternalInconsistencyException',原因:'无法使类型的视图出列:具有标识符歌曲的UICollectionElementKindCell - 必须为标识符注册一个nib或类或者在故事板中连接原型单元'

我的单元格是自定义类,这里是代码:

class HACollectionViewCell: UICollectionViewCell {
    @IBOutlet var title: UILabel!
    @IBOutlet var band_album: UILabel!
    @IBOutlet var length: UILabel!

    required init?(coder aDecoder: NSCoder) {
        super.init(coder:aDecoder)
        NSLog("I made a new cell!!")
        //You Code here
    }
 }

连接插座(即当我将鼠标悬停在指示灯上时,正确的东西会亮起)。单元格布局位于Main.storyboard中,作为UICollectionView对象的子级。

同样,单元格对象本身具有Class" Custom Class"设置为HACollectionViewCell。此外,UICollectionView连接到我的第一个视图控制器文件中的插座。

失败的功能:

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "song", for: indexPath) as! HACollectionViewCell
    let song = song_list[indexPath.row]
    cell.title.text = song.title
    cell.band_album.text = (song.artist ?? "unknown artist") + (song.albumTitle ?? "unknown album title")
    cell.length.text = String(song.playbackDuration)
        return cell
}

我已经检查过以确保我的重用标识符没有空格。这完全是"歌曲"。来自" Main.storyboard":

<collectionReusableView key="sectionFooterView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="song" id="HEQ-RD-L8g" userLabel="Song Cell" customClass="HACollectionViewCell" customModule="Hamper" customModuleProvider="target">

BTW,我在macOS 10.12.5上使用Xcode 8.3.3或Xcode 9(beta)。两个程序中的错误相同。 Target是运行iOS 10.3.2的iPhone 5s。

1 个答案:

答案 0 :(得分:1)

<collectionReusableView key="sectionFooterView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="song" id="HEQ-RD-L8g" userLabel="Song Cell" customClass="HACollectionViewCell" customModule="Hamper" customModuleProvider="target">

为什么显示collectionReusableView?它应该是collectionViewCell类似的东西:

<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="song" id="HEQ-RD-L8g" userLabel="Song Cell" customClass="HACollectionViewCell" customModule="Hamper" customModuleProvider="target">

我认为您使用的是Collection Reusable View而不是Collection View Cell