這似乎是一個簡單的問題,但我無法在 Swift 檔案中找到任何解決方案。當我在 Kotlin 中編程時,通常使用init()類的方法來執行一些作業,以便設定類并準備好使用。
現在我正在創建一個UIViewRepresentable并希望在初始化此結構后立即執行某些操作。似乎init()結構的方法只關心成員初始化。
例如,.onAppeara 的方法View提供此功能,如下所示:
struct MapView: View {
@StateObject private var viewModel = MapViewModel()
var body: some View {
Map(coordinateRegion: $viewModel.region,
interactionModes: .all,
showsUserLocation: true)
.onAppear {
// this will occur as soon as the View appears
viewModel.safeCreateLocationManager()
}
}
}
但是現在在定義一個UIViewRepresentable結構時,我希望做同樣的事情:
struct OverlayMapView: UIViewRepresentable {
@StateObject private var viewModel = MapViewModel()
// immediately do the following:
viewModel.safeCreateLocationManager()
func makeUIView(context: Context) -> MKMapView {
...
}
func updateUIView(_ uiView: MKMapView, context: UIViewRepresentableContext<OverlayMapView>) {
...
}
}
uj5u.com熱心網友回復:
這是可能的,但不正確(所以我什至不會告訴你如何),而是使用它
struct OverlayMapView: UIViewRepresentable {
@StateObject private var viewModel = MapViewModel()
func makeUIView(context: Context) -> MKMapView {
viewModel.safeCreateLocationManager() // << here !!
// view creation is next ...
*在之后和之前makeUIView呼叫initonAppear
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/496750.html
標籤:IOS 迅速 迅捷 uiviewrepresentable 快速结构
