別のviewControllerのUIImageViewをタップすると、UIImageView wCircle
を赤に変更しようとしています。問題は、私がrDot
をタップすると、Thread 1: EXC_BAD_INSTRUCTION (code = EXC_I386_INVOP subcode = 0x0)
wCircle
をグローバル変数にしたので、他のviewControllerに到達する可能性があります。異なるviewControllerのtapGestureで画像の色を変更します
まずViewControllerを
weak var wCircle: UIImageView!
class SecondViewController: UIViewController {
@IBOutlet weak var wCircle: UIImageView!
}
第二のViewController
class ProgressViewController: UIViewController {
@IBOutlet weak var rDot: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
rDot.isUserInteractionEnabled = true
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(rdotimageTapped(tapGestureRecognizer:)))
rDot.addGestureRecognizer(tapGestureRecognizer)
}
func rdotimageTapped(tapGestureRecognizer: UITapGestureRecognizer) {
wCircle.image = wCircle.image!.withRenderingMode(.alwaysTemplate) //error on this line
wCircle.tintColor = UIColor.red
}
}
私はあなたのコードの値下げを編集するために最善を尽くしました - それはあまり意味がありませんでした。 (必要な箇所を修正してください。ありがとう!)編集後、いくつかのコードが見つからないように見えます。最初のコントローラはどのようにして2番目のインスタンスを生成しますか? 'rdotimageTapped'は実際に動作していますか? (ブレークポイントを設定してそれに確実に答えますか?)他にも可能性がありますが、それらは私に飛び乗る最初の2つです。 – dfd
@dfdその編集に感謝します。私はそれが質問に必要なすべてのコードだと信じています。 'rdotimageTapped'が動作しています。私は、あなたが2番目のインスタンスを生成するviewControllerによって何を意味するかについてはあまりよく分かりません。 – Tabj
@Tabjはクラス外のグローバル変数を宣言するのは良い考えではありません。そのため、 'rDot'をタップしても何も起こらないので、グローバル変数を自分のクラス –