Passando argumentos para o Seletor no Swift
Estou adicionando programaticamente um UITapGestureRecognizer a um dos meus modos de exibição:
let gesture = UITapGestureRecognizer(target: self, action: #selector(self.handleTap(modelObj:myModelObj)))
self.imageView.addGestureRecognizer(gesture)
func handleTap(modelObj: Model) {
// Doing stuff with model object here
}
O primeiro problema que encontrei foi "O argumento de '#selector' não se refere a um método, propriedade ou inicializador '@Objc' '.
Legal, adicionei @objc à assinatura handleTap:
@objc func handleTap(modelObj: Model) {
// Doing stuff with model object here
}
Agora estou recebendo o erro "O método não pode ser marcado como @objc porque o tipo do parâmetro não pode ser representado em Objective-C.
É apenas uma imagem do mapa de um edifício, com algumas imagens de pinos indicando a localização dos pontos de interesse. Quando o usuário toca em um desses pinos, eu gostaria de saber em qual ponto de interesse ele tocou e eu tenho um objeto de modelo que descreve esses pontos de interesse. Eu uso esse objeto de modelo para dar à imagem do alfinete as coordenadas no mapa, então achei que seria fácil enviar o objeto ao manipulador de gestos.