2017-08-22 8 views
0

rDotという名前のUIImageViewをtapGestureでタップ可能にしようとしています。画像ビューrDotをタップすると、別のviewControllerに異なるUIImageViewがあります。という名前のwCircleが赤くなります。問題はコードが実行されているが、rDotをタップすると、もう1つの画像wCircleが赤くならない。tapGesture change color

override func viewDidLoad() { 
    super.viewDidLoad() 

    let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(imageTapped(tapGestureRecognizer:))) 
    rDot.isUserInteractionEnabled = true 
    rDot.addGestureRecognizer(tapGestureRecognizer) 
}  

func imageTapped(tapGestureRecognizer: UITapGestureRecognizer) 
{ 
let wCircle = UIImageView(image: UIImage(named:"wCircle")?.withRenderingMode(.alwaysTemplate)) //error here 
    wCircle.tintColor = UIColor.red 
} 
+0

を変更したい場合は**あなたはそれが回答された後、完全に別のものにあなたの質問を変更することはできません。**それは答えを書いた人に不公平ですスタックオーバーフローでは許可されません。フォローアップの質問がある場合は、新しい質問をする必要があります。コンテキストを提供する必要がある場合は、古いものへのリンクを含めることができます。この質問は混乱しているので、質問のさまざまな "バージョン"にすべての種類の回答があるので、私はそれを閉じました。それでも問題が解決しない場合は、新しい質問をしてください。 –

答えて

0

画像アセットが正確に敏感な「wCircle」の場合、 は再び、資産にプロジェクトバンドルに、私は「wCircle」とのイメージがないので、UIImageViewを初期化できませんでしたとは思いませんという名前のイメージを持っていることを確認してください資産に存在する

0

UITapGestureRecognizerを初期化する方法が正しくありません。

0

があなたのオブジェクトwCircleが存在していることを確認して、スウィフトコードのコンテキストでは成功し

1

を初期化し、コントローラのクラス名とViewControllerを置き換え

UITapGestureRecognizer(target: self, action: #selector(ViewController.imageTapped(tapGestureRecognizer:))) 

を試してみて、EXC_BAD_INSTRUCTIONは通常、あなたがコンパイラを打ってきた意味しますトラップ、つまり、実行時に検出されたバグのためにコンパイラによってコードに挿入された未定義の命令。これらの最も一般的な原因は以下のとおりです。

  1. オプションをアンラップの失敗 - これは強制的にアンラップすることができ、または暗黙のアンラップ(それがnilだオプションの暗黙的に開封されたアクセス)(!)。

  2. 範囲外の配列

  3. 失敗強制キャスト(など!)、値がnilオプションでしたので、どちらかまたは値の型が間違っていたので。

wCircleがnilでないことを確認してください。 コンセントが正しく接続されているかどうか確認してください。

0

"wCircle"とは何ですか? UIImageはtintColorと呼ばれるプロパティを持たない、あなたが変化画像の色は、彼のコンテナUIImageViewのtintColor

+0

両方の画像はUIImageViewsです。 – Tabj