UICollectionViewCell 中的 Outlet 为零

Posted

技术标签:

【中文标题】UICollectionViewCell 中的 Outlet 为零【英文标题】:Outlet is nil in UICollectionViewCell 【发布时间】:2016-12-23 02:59:33 【问题描述】:

我有一个 UICollectionViewCell 定义如下:

import UIKit

class GalleryCellCollectionViewCell: UICollectionViewCell 

    @IBOutlet weak var image: UIImageView!


当我添加插座时,Xcode 会自动将其放入。在我的UICollectionViewController

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

函数,然后我尝试设置图像。我的代码是

 override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! GalleryCellCollectionViewCell
        let imagePackage = imagePackages?[indexPath.item]
        let uiImage = imagePackage?.getUIImage()
        cell.image.image = uiImage
        return cell
    

在调试器的变量查看器中,我可以看到uiImage 不是nil。但是,cell.imagenil。为什么会这样?我在storyboard 中没有正确链接它吗?

【问题讨论】:

这行let uiImage = imagePackage?.getUIImage()的意思,显示这个方法。 @IBOutlet weak var image: UIImageView! 千万不要使用和苹果框架中声明的变量相同的变量,否则x-code会发生冲突并根据它理解代码。 当我看到你的代码工作时,我似乎很完美,所以重新检查你的 reuseIdentifier 拼写以及它是否完美分配给单元格 dequeue 属性。 【参考方案1】:

这条线看起来很奇怪:

cell.image.image = uiImage

为什么你的单元格有多个图像实例?

编辑:

这段代码看起来不错。让我们看看getUIImage function。我相信问题出在函数本身附近。

【讨论】:

OP 的出口名称令人困惑......他将其定义为“@IBOutlet weak var image: UIImageView!”。它应该被命名为更有意义的东西。【参考方案2】:

您可以使用标签以另一种方法访问图像。 从单元格的界面构建器(IB)转到属性选项卡(第三个选项卡)并为图像设置标签(如 5)

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! GalleryCellCollectionViewCell
    let imagePackage = imagePackages?[indexPath.item]
    let uiImage = imagePackage?.getUIImage()
    var cellImg:UIImageView = cell!.viewWithTag(5) as! UIImageView;

    cellImg.image = uiImage
    return cell

【讨论】:

以上是关于UICollectionViewCell 中的 Outlet 为零的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionViewCell 中的 Outlet 为零

UICollectionViewCell 中的 SwiftUI 视图

UITableViewCell 中的 UICollectionViewCell 中的按钮点击操作

UICollectionViewCell 中的按钮

UICollectionViewCell 内的 UIImageView 中的角半径

UICollectionViewCell 中的标签文本未更新