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.image
是 nil
。为什么会这样?我在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 中的按钮点击操作