2017-03-10 9 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

怠惰な宣言を削除し、閉じ括弧の後にadd()を実行してみてください。 –

+0

これは変数であり、戻り値のパラメータを持つ関数ではなく、UIImageView型です。あなたは戻り値の型を持つハンドラを作成する必要があります。 – mattd

答えて

0

構文の問題のように見える、あなたがprofileImageViewはクロージャを含めるようにしたいコンパイラを言っている

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

lazy varを使用すると完全に有効ですが、終了後に括弧がありません。 –

9

を試してみてください。あなたはprofileImageViewは、その閉鎖の結果が含まれているしたい場合は、クロージャを呼び出すために後に括弧を追加する必要があります。

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

閉鎖後の括弧に注意してください。これは、変数を初めて参照するときにクロージャを呼び出した結果を変数profileImageViewに代入します。

+0

これが受け入れられる回答である必要があります。 – scurioni

関連する問題