Быстрая раскадровка - Создание перехода в MapView с помощью кнопки раскрытия calloutaccessorycontroltapped - PullRequest
0 голосов
/ 29 июня 2018

В моем MapView у меня есть несколько выводов MKAnnotation, каждый из которых имеет viewFor, настроенный для отображения небольшого всплывающего окна с кнопкой раскрытия «I» справа.

Теперь я пытаюсь найти способ создать переход от нажатия кнопки «I» раскрытия во всплывающем окне - я вижу, что это можно сделать с помощью

func mapView(... calloutAccessoryControlTapped control: UIControl)

Однако, поскольку на раскадровке контакты MKAnnotation, конечно, не отображаются, я не знаю, как использовать метод перетаскивания для создания перехода и получения соответствующего идентификатора перехода.

Мой обходной путь - я в основном создаю экземпляр другого контроллера вида, к которому я хочу перейти, и переключаюсь на этот новый вид при каждом нажатии кнопки «I»

func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) {
    let settingVC = self.storyboard?.instantiateViewController(withIdentifier: "SetNotifPageID") as! SetNotificationViewController
    self.present(settingVC, animated: true, completion: nil)

}

Но есть ли лучший способ сделать это, скажем, из раскадровки, или, может быть, с более правильным подходом?

1 Ответ

0 голосов
/ 29 июня 2018

Чтобы создать переход, в раскадровке перетащите значок ViewController на одном контроллере представления в область просмотра второго контроллера представления.

enter image description here

Затем позвоните performSegue(identifier:sender) из mapView(_:annotationView:calloutAccessoryControlTapped:).

    func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) {
        performSegue(withIdentifier: "yourSegueIdFromTheStoryboard", sender: nil)
}

Сконфигурируйте ваш целевой контроллер вида из prepare(for:sender:).

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if let viewController = segue.destination as? SetNotificationViewController {
            // configure your view controller
        }
    }
...