我只是想不起来了,请帮我理解一下这里发生了什么:
因此,我有一个图像资产,我试图在UICollecionView中看到。我有一个图像名和文件名数组,所以在收集器视图中:cellForItemAtIndexPath:函数
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as ImageCell
let currentPhoto = photos[indexPath.row]
let currentImage = UIImage(named: currentPhoto.filename)
cell.imageC?.image = currentImage
println("collectionView:cellForItemAtIndexPath:\(indexPath.row)")
println(currentPhoto.filename)
println("currentImage \(currentImage!.imageAsset)")
println("cell.image \(cell.imageC?.image)")
return cellimageC定义为
class ImageCell: UICollectionViewCell {
@IBOutlet weak var imageC: UIImageView!
}所以我看到currentImage正确地得到了一个图像。普林给了我这个:
currentImage <UIImageAsset: 0x7fead1e55790>
然而,cell.imageC?.image是零!为什么?我混淆了选项,并没有真正理解包装-解包装变量和常量,但是在这里,我所做的一切都与TableView教程中的完全相同。拜托,给我点线索-我被困在泥里了
发布于 2015-02-06 14:52:53
我在viewDidLoad()中注释掉了
self.collectionView!.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier) 而且起作用了!我不知道为什么,但作为一个临时的解决方案,这对我来说很好。
奇怪的是,如果您尝试创建新的viewDidLoad类,那么这行代码是默认UIViewCollectionController ()方法的一部分
发布于 2015-02-04 23:17:59
如果您使用以下内容,它应该可以工作:
cell.imageC.image = currentImage在您的ImageCell类中,您将图像定义为一个感叹号( UIImageView! ),该感叹号基本上表示您没有初始化变量,但它在被引用之前将包含一些内容。这不是可选的。
快速选项存在,以使代码更安全。它引入了一个概念,即没有常量或任何变量包含nil,因为它将在访问时抛出一个错误。相反,如果有可能变量中没有任何内容,则可以将其标记为可选。这个可选的标志有点像一个布尔值,它表示变量中是否有什么东西。一旦您检查变量是否为零,然后展开它,您将得到它的内容。
https://stackoverflow.com/questions/28333083
复制相似问题