Swift 5 - 无法从数组中获取要填充的图像

Swift 5 - Unable to get images to populate from Array

我正在尝试使用字符串数组和图像填充集合视图,但是当代码运行时,显示的图像是初始化图像,而不是我推入数组的图像。但是,字符串是正确的。

我在单独的 swift 文件中声明我的 class:

import UIKit

class Tiles {
  var title: String?
  var image: UIImage?
  var display: String?

  init(title: String, image: UIImage, display: String) {
    self.title = title
    self.image = #imageLiteral(resourceName: "blank_whiteTile_48pt")
    self.display = display  
  }
}

然后在集合视图中填充数组,然后将数组与集合视图的单元格相关联:

var tiles : [Tiles] = [Tiles(title: "Ceramic", image:#imageLiteral(resourceName: "ceramic_white"), display: "All"),
                       Tiles(title: "Marble", image: #imageLiteral(resourceName: "marble"), display: "All")]





override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! TileDisplay
    //define each cell
    cell.tiles = tiles[indexPath.item]

    return cell
}

我还尝试将 UIImage 换成 UIImageView,但这并没有产生任何不同的结果。

在您的初始化程序中,您需要执行以下操作:

删除您分配给 self.image 的静态值。 将您的图像参数分配给 self.image(从而使其成为动态的)...

您可以设置参数的默认值,这样如果在初始化调用中没有输入参数,您将自动使用“#imageLiteral(resourceName: "blank_whiteTile_48pt")”...

现在发生的事情是您对值进行了硬编码。

init(title: String, 
image: UIImage = #imageLiteral(resourceName: "blank_whiteTile_48pt"), 
display: String) {
    self.title = title
    self.image = image
    self.display = display

}