无法将类型'() - > _'的值转换为指定的类型UIImageView

Jam*_*eel 15 uiimageview ios swift

我试图让UIImage视图可点击,但我没有运气.完成此任务的最佳方法是什么?我得到的错误是"无法将类型'() - > _'的值转换为指定类型'UIImageView'".

lazy var profileImageView: UIImageView = {
     let imageView = UIImageView()
     imageView.image = UIImage(named: "ic_file_upload_white_48pt")
     imageView.translatesAutoresizingMaskIntoConstraints = false
     imageView.contentMode = .scaleAspectFill

     imageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleSelectorProfileImage)))
     imageView.isUserInteractionEnabled = true
     return imageView
 }
Run Code Online (Sandbox Code Playgroud)

Dun*_*n C 51

您告诉编译器您要profileImageView包含一个闭包.如果希望profileImageView包含该闭包的结果,则需要在之后添加parens以调用闭包:

lazy var profileImageView: UIImageView = {
  //your code here
  return imageView
}()
Run Code Online (Sandbox Code Playgroud)

关闭后请注意括号.这会在您第一次引用变量时将结果调用给您profileImageView的变量.


jok*_*man 6

看起来像语法问题,请尝试

func profileImageView() -> UIImageView {
        let imageView = UIImageView()
        imageView.image = UIImage(named: "ic_file_upload_white_48pt")
        imageView.translatesAutoresizingMaskIntoConstraints = false
        imageView.contentMode = .scaleAspectFill

        imageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleSelectorProfileImage)))
        imageView.isUserInteractionEnabled = true
        return imageView
}
Run Code Online (Sandbox Code Playgroud)

  • 使用惰性var是完全有效的,但在关闭后它缺少括号. (17认同)

小智 6

您应该在计算属性结束后添加括号以执行它。

lazy var profileImageView: UIImageView = {
     let imageView = UIImageView()
     imageView.image = UIImage(named: "ic_file_upload_white_48pt")
     imageView.translatesAutoresizingMaskIntoConstraints = false
     imageView.contentMode = .scaleAspectFill

     imageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleSelectorProfileImage)))
     imageView.isUserInteractionEnabled = true
     return imageView
 }()
Run Code Online (Sandbox Code Playgroud)

  • 嗯,是的。一年多前我也这么说过,但我也解释了原因。 (2认同)