В NavigationView
у меня есть Button
и MKMapView
(называемые MapView
). Когда пользователь нажимает кнопку, карта должна приближаться к местоположению пользователя.
Я знаю, как использовать MKMapView.setRegion
для увеличения местоположения пользователей, но я не могу понять, как правильно * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *} * * * * * Я не могу не знать, что я должен получить »(1018» »» »» ».
Если у меня есть какая-либо ссылка на мой MapView
объект" ””, я могу вызвать setRegion
, но я понимаю, что это обязательно ”. и теперь, когда я изучаю SwiftUI, вместо этого я пытаюсь мыслить декларативно.
Поэтому я считаю, что должен установить переменную State
какого-либо типа и заставить MapView
прослушивать изменения этой переменной. Но если мне удастся это сделать, то MapView
вызов setRegion
будет в любом случае обязательным.
Так что я здесь почесываю голову. Что мне делать?
struct ContentView: View {
@State private var foo: Bool = false
var body: some View {
NavigationView {
MapView()
.navigationBarItems(trailing:
HStack {
Button(action: {
// zoom to user's location
self.foo.toggle()
}) {
Image(systemName: "location")
}
})
}
}
}
struct MapView: UIViewRepresentable {
@Binding var foo: Bool
// if foo is changed, then call zoomToUserLocation()
func zoomToUserLocation() {
// ...
mapView.setRegion(region, animated: true)
}
}