我该如何解决“无法分配'UIImageView类型的值?'键入“ UIImage?”问题?

时间:2019-07-09 16:41:06

标签: ios swift uiimageview

免责声明:我已经修改/修改了我的导师从互联网上下载的项目。

这是我的家庭作业项目:屏幕上3个幸运饼干,用户单击“查找我的财富”按钮,该按钮随机选择了三个cookie之一(使用.randomElement()属性)。将打开一个窗口,显示该随机cookie图像。但是,我无法将窗口内的图像设置为.randomElement()属性的结果

我已经尝试过将UIImage转换为UIImageView,反之亦然,但现在已经不知所措了。

这是正在形成的随机元素的全局类

class globalElements {
    static let cookiesArray = [globalElements.numberOne,        
        globalElements.numberTwo, globalElements.numberThree]
    static let randomlyAssignedCookie = cookiesArray.randomElement()

}


//And here is where the title error shows up:


let randomlyChosenFortune: UIImageView = {
    let image = UIImageView()
    image.translatesAutoresizingMaskIntoConstraints = false
    image.clipsToBounds = true
    image.contentMode = .scaleAspectFit
    image.image = globalElements.randomlyAssignedCookie //(error: Cannot assign value of type 'UIImageView?' to type 'UIImage?')//

    return image
}()

2 个答案:

答案 0 :(得分:3)

您应将UIImage设置为UIImageView的{​​{1}}。

您的UIImage类型可能不是globalElements.randomlyAssignedCookie

如果要将图像设置为UIImage,则应使用UIImageView类型。

只有相同类型可以彼此同步

我希望这会有所作为。

享受。

答案 1 :(得分:1)

您正在尝试将UIImageView分配给类型UIImage。这是两件事。首先,将randomlyChosenFortune分配给“ imageView”时,我将命名为“ image”。 UIImageView是UIView的子类,即可以将其添加到视图层次结构中。 UIImage只是一张图片。它没有框架,拐角半径,边框宽度等。

这意味着,当您想向视图中实际添加在代码中创建的UIImage时,您需要执行以下操作:

  1. 创建UIImageView的实例
  2. UIImageView的可选image属性设置为UIImage
  3. UIImageView添加到视图层次结构

这里是您学习差异的好参考:Difference between UIImage and UIImageView

UIImage参考:https://developer.apple.com/documentation/uikit/uiimage

UIImageView参考:https://developer.apple.com/documentation/uikit/uiimageview

了解UIView子类:https://developer.apple.com/documentation/uikit/uiviewhttps://medium.com/@fvaldivia/view-hierarchy-in-swift-ios-9f86a7479cb5