2017-03-10 23 views
1

我想使UIImage视图可点击,但我没有运气。完成这项任务的最好方法是什么?我得到的错误是“无法将类型'() - > _'的值转换为指定类型'UIImageView'”。不能将类型'() - > _'的值转换为指定的类型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 

} 

}

+0

尝试删除惰性声明并在右括号后添加() –

+0

因为这是一个变量,而不是具有返回参数的类型为UIImageView的函数。你应该创建一个返回类型的处理程序。 – mattd

回答

0

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

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 
} 
+5

使用懒惰变量是完全有效的,但它在关闭后缺少括号。 –

9

你是在告诉你想profileImageView包含一个封闭的编译器。如果你想profileImageView以包含封闭的结果,你需要以调用关闭后加括号:

lazy var profileImageView: UIImageView = { 
    //your code here 
    return imageView 
}() 

注意关闭后的括号。在第一次引用变量时,将调用闭包的结果赋给变量profileImageView

+0

这应该是被接受的答案。 – scurioni

相关问题