Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在SwiftUI NavigationView中,UIViewRepresentable存在问题_Ios_Swift_Swiftui_Xcode11 - Fatal编程技术网

Ios 在SwiftUI NavigationView中,UIViewRepresentable存在问题

Ios 在SwiftUI NavigationView中,UIViewRepresentable存在问题,ios,swift,swiftui,xcode11,Ios,Swift,Swiftui,Xcode11,这是我的ContentView.swift文件: struct ContentView: View { var body: some View { NavigationView { MapView() } } } struct MapView: UIViewRepresentable { func makeUIView(context: Context) -> MKMapView { let

这是我的
ContentView.swift
文件:

struct ContentView: View {
    var body: some View {
        NavigationView {
            MapView()
        }
    }
}
struct MapView: UIViewRepresentable {

    func makeUIView(context: Context) -> MKMapView {
        let mapView = MKMapView(frame: .zero)

        return mapView
    }

    func updateUIView(_ view: MKMapView, context: Context) {
        print("test")
    }

}
这是我的
MapView.swift
文件:

struct ContentView: View {
    var body: some View {
        NavigationView {
            MapView()
        }
    }
}
struct MapView: UIViewRepresentable {

    func makeUIView(context: Context) -> MKMapView {
        let mapView = MKMapView(frame: .zero)

        return mapView
    }

    func updateUIView(_ view: MKMapView, context: Context) {
        print("test")
    }

}
有了这些代码行,当我运行应用程序时,它会在控制台中打印两次
test

但是当我更改
ContentView
并从中隐藏
NavigationView
时,如下所示:

struct ContentView: View {
    var body: some View {
        // NavigationView {
            MapView()
        // }
    }
}
现在它在控制台中打印一个
test

实际上,这意味着当我们将
NavigationView
uiviewsrepresentable
一起使用时,它调用了两次
updateUIView
func,似乎是错误的


我们该如何处理呢?

SwiftUI可能在任何时候都需要视图来重新计算他们的身体。您不应该太担心框架的内部工作。如果您在
updateUIView()
中做了您应该做的事情,那么一切都应该很好。如果<代码> UpDATUIVIEW()/代码>运行两次对你来说是个问题,请考虑解释为什么,我在地图的中心有一个标记。所以当用户点击它时,我想在地图中添加
注释。所以用户可以更改区域并再次点击。但它也有一个
后退按钮
。当用户点击back时,我想从地图中删除最后一条注释。但是在这种情况下,当
updateUIView
调用两次或两次以上时,
annotations
在错误的索引中被删除。WIFTUI可能在任何时候都需要视图来重新计算它们的主体。您不应该太担心框架的内部工作。如果您在
updateUIView()
中做了您应该做的事情,那么一切都应该很好。如果<代码> UpDATUIVIEW()/代码>运行两次对你来说是个问题,请考虑解释为什么,我在地图的中心有一个标记。所以当用户点击它时,我想在地图中添加
注释。所以用户可以更改区域并再次点击。但它也有一个
后退按钮
。当用户点击back时,我想从地图中删除最后一条注释。但在这种情况下,当
updateUIView
调用两次或两次以上时,
annotations
在错误的索引中被删除