我在将“用户选择的”图像分配给tableViewCells和tableview背景时遇到问题。我收到错误消息“无法分配类型为'UIImage'的值?”键入“ UIView?”。
Fx。当我写以下内容时,尝试获取用户选择的图像,显示在特定的单元格中:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Diary1", for: indexPath)
cell.textLabel?.text = allDiaries[indexPath.row].diaryName
cell.detailTextLabel?.text = allDiaries[indexPath.row].diaryQuestion
cell.backgroundView = UIImage(data: newDiary?.diaryTheme ?? Data())
return cell
}
在编写此代码时,我在另一个地方也遇到相同的错误:
override func viewDidLoad() {
super.viewDidLoad()
tableView.backgroundView = UIImage(data: (newDiary?.diaryTheme ?? Data()))
}
所以我想在处理tableView的背景时,您必须知道如何从UIImageView转换为UIView。
任何人都知道该怎么做?
谢谢!
答案 0 :(得分:4)
您需要创建一个包含UIImageView
的{{1}}实例,然后将该imageView设置为UIImage
属性,因为backgroundView
是{的子类, {1}}。
UIImageView
然后在UIView
中执行相同操作(请记住,我将let imageView = UIImageView(image: UIImage(data: (newDiary?.diaryTheme ?? Data())))
tableView.backgroundView = imageView
更改为cellForRowAt
,因为否则所有单元格都将获得相同的背景图像)
newDiary
答案 1 :(得分:0)
您正在尝试分配UIImage
,而不是UIImageView
。您必须使用图片创建UIImageView
,然后才能将其设置为背景视图
cell.backgroundView = UIImageView(image:UIImage(data: newDiary?.diaryTheme ?? Data()))
答案 2 :(得分:0)
尝试使用UIColor
属性设置backgroundColor
的{{1}}。
UIView
代码:
public init(patternImage image: UIImage)
在TableViewCell中
if let image = UIImage(data: newDiary?.diaryTheme ?? Data()) {
tableView.backgroundView.backgroundColor = UIColor.init(patternImage: image)
}
答案 3 :(得分:0)
尝试使用背景色和图像相同的颜色。
tableView.backgroundView.backgroundcolor = color.patterneImage(UIImage(data: (newDiary?.diaryTheme ?? Data())))