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
}
構文の問題のようです、試してください
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
}
profileImageView
にクロージャーを含めるようコンパイラーに指示しています。 profileImageViewにそのクロージャの結果を含めたい場合は、クロージャを呼び出すために括弧を追加する必要があります。
lazy var profileImageView: UIImageView = {
//your code here
return imageView
}()
閉じた後の括弧に注意してください。これは、変数を初めて参照するときに、クロージャーを呼び出すresultを変数profileImageView
に割り当てます。
タイプ(<something>) -> type
が表示されたら、それはクロージャです。 ->
ビットは、パラメーターを戻り値の型から分離します。 Swiftのエラーメッセージを解読するのは難しい場合がありますが、これは、予期したものではなく、クロージャーを返す手がかりです。
計算されたプロパティを実行するには、末尾に括弧を追加する必要があります。
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
}()