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
}
我正在尝试使用字符串数组和图像填充集合视图,但是当代码运行时,显示的图像是初始化图像,而不是我推入数组的图像。但是,字符串是正确的。
我在单独的 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
}