2017-01-25 2 views
0

Я создаю аннотацию, в которую включена настраиваемая кнопка. Когда эта кнопка используется, она должна что-то делать. Сначала я попытаюсь сделать печать. Поскольку это работает сейчас, аннотация закрывается, ничего не печатая. Его закрытие, потому что я делаю 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.

ответ

0

Выполняет .removeFromSuperview(), потому что вы устанавливаете значение false, поэтому оператор if всегда терпит неудачу и переходит к else.

Ваша линия: super.setSelected (ложные, анимированные: анимированные)

должно быть: super.setSelected (выборочные, анимированные: анимированные)

+0

К сожалению, ничего не изменило – jonask

+0

Установите некоторые контрольные точки и выясните, что происходит с выбранным, и почему ваш оператор if не работает. – karnett

+0

Это не утверждение if, которое терпит неудачу. В проекте я настроил несколько меток внутри оператора if, и он отлично работает. Но кнопка не будет реагировать – jonask

Смежные вопросы