Я создаю аннотацию, в которую включена настраиваемая кнопка. Когда эта кнопка используется, она должна что-то делать. Сначала я попытаюсь сделать печать. Поскольку это работает сейчас, аннотация закрывается, ничего не печатая. Его закрытие, потому что я делаю button.removeFromSuperview. Вот как это выглядит очень коротко, и сосредоточиться только на кнопкуПрограммная кнопка в пользовательской аннотации
class CustomAnnotation: MKPinAnnotationView, MKMapViewDelegate, CLLocationManagerDelegate {
let infoButton : UIButton = UIButton.init(frame:CGRect(x: 250, y: -300, width: 40, height: 40))
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(true, animated: animated)
if(selected) {
infoButton.setImage(UIImage(named:"home.png"), for: .normal)
infoButton.addTarget(self, action: #selector(sayHello), for:.touchUpInside)
self.addSubview(infoButton)
} else {
infoButton.removeFromSuperview()
}
func sayHello(sender: UIButton!) {
print("I should print something...")
}
}
Все в настраиваемой annotationview выглядит великолепно. Я вызываю класс CustomAnnotation в свой Viewcontroller в функции viewForAnnotation.
К сожалению, ничего не изменило – jonask
Установите некоторые контрольные точки и выясните, что происходит с выбранным, и почему ваш оператор if не работает. – karnett
Это не утверждение if, которое терпит неудачу. В проекте я настроил несколько меток внутри оператора if, и он отлично работает. Но кнопка не будет реагировать – jonask