如何分配“ UIImage”类型的值?键入“ UIView?”

时间:2018-11-05 12:07:05

标签: ios swift uiview uiimageview tableview

我在将“用户选择的”图像分配给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。

任何人都知道该怎么做?

谢谢!

4 个答案:

答案 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())))