tapGesture изменить цвет

Я пытаюсь сделать UIImageView названный rDot доступно с помощью tapGesture. Когда просмотр изображения rDot прослушивается, я хочу другой UIImageView на другом viewController с именем wCircle, чтобы стать красным. Проблема в том, что код запускается, но когда я нажимаю rDot другое изображение wCircle не краснеет.

 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
}

5 ответов

В контексте кода Swift EXC_BAD_INSTRUCTION обычно означает, что вы попали в ловушку компилятора, то есть неопределенную инструкцию, вставленную в код компилятором из-за ошибки, обнаруженной во время выполнения. Наиболее распространенной причиной этого являются:

  1. Не удалось развернуть необязательный параметр. Это может быть принудительное развертывание (!) или неявное развертывание (доступ к неявно развернутому необязательному значению, равному nil).

  2. массив вне границ

  3. неудачное принудительное приведение (как!), либо из-за того, что значение было необязательным, либо из-за неправильного типа.

Проверьте, если wCircle не ноль. Проверьте правильность подключения розетки.

Способ, которым вы инициализируете ваш UITapGestureRecognizer, неверен. Пытаться

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

замещать ViewController с именем класса вашего контроллера

Убедитесь, что ваш объект wCircle присутствует и успешно инициализирован

Убедитесь, что ваши ресурсы изображения имеют изображение с точным именем "wCircle", чувствительное к регистру, опять же, в ресурсах, не входящих в пакет проекта, я думаю, что UIImageView не может быть инициализирован, потому что изображение с "wCircle" не существует в ресурсах

Что такое "wCircle"? UIImage не имеет свойства с именем tintColor, если вы хотите изменить цвет изображения, измените его контейнер UIImageView в tintColor

Другие вопросы по тегам