Я пытаюсь настроить Mapbox для навигации в приложении на SwiftUI. Прямо сейчас viewController возвращает ноль. Я посмотрел на другие ответы на этот вопрос, и большинство из них рекомендуют добавить другой обработчик завершения в функцию, где происходит обратный вызов. Вот код:
func makeUIViewController(context: Context) -> NavigationViewController {
getRoute { route in
let viewController = NavigationViewController(for: route as! Route)
viewController.modalPresentationStyle = .fullScreen
}
//Use of unresolved identifier viewController
return viewController
}
Добавление замыкания к этой функции дает мне ошибку:
Тип 'NavView' не соответствует протоколу 'UIViewControllerRepresentable'
Помимо добавления замыкания к функции, что еще я могу сделать, чтобы получить значение из getRoute {}?
Вот остаток кода:
struct NavView: UIViewControllerRepresentable{
typealias CompletionHandler = (Any) -> Void
func makeUIViewController(context: Context) -> NavigationViewController {
getRoute { route in
let viewController = NavigationViewController(for: route as! Route)
viewController.modalPresentationStyle = .fullScreen
}
//Use of unresolved identifier viewController
return viewController
}
func updateUIViewController(_ uiView: NavigationViewController, context: Context) {
}
func getRoute(_ completionHandler: @escaping CompletionHandler){
// Define two waypoints to travel between
let origin = Waypoint(coordinate: CLLocationCoordinate2D(latitude: 38.9131752, longitude: -77.0324047), name: "Mapbox")
let destination = Waypoint(coordinate: CLLocationCoordinate2D(latitude: 38.8977, longitude: -77.0365), name: "White House")
// Set options
let options = NavigationRouteOptions(waypoints: [origin, destination])
// Request a route using MapboxDirections.swift
Directions.shared.calculate(options) { (waypoints, routes, error) in
guard let route = routes?.first else { return }
completionHandler(route)
}
}