如何将特定元素从数组传递到另一个视图或函数?迅速

我正在从服务器加载数据并将其传递给数组。该数据包括坐标,文本,图像等。它还包含名为“ id”的变量(我曾考虑过对特定ID进行数组排序,但不确定这是否是一个好的解决方案)。此数据用于在地图上显示标记。 我的任务是在单独的视图上显示此标记的详细信息。如何告诉此详细信息屏幕选择了哪个标记,或者如何根据所选标记从数组中获取特定元素?

这是我创建标记的地方:

for element in spots {
        let image = UIImage(named: element.type)

        let position = CLLocationCoordinate2D(latitude: element.coordinates.latitude,longitude:
            element.coordinates.longitude)
        marker = GMSMarker(position: position)
        marker.icon = image
        marker.map = mapView
    }
wangchen1211 回答:如何将特定元素从数组传递到另一个视图或函数?迅速

您可以使用GMS委托方法来检查点击了哪个标记。

for element in spots {
    let image = UIImage(named: element.type)

    let position = CLLocationCoordinate2D(latitude: element.coordinates.latitude,longitude:
        element.coordinates.longitude)
    marker = GMSMarker(position: position)
    marker.icon = image
    marker.map = mapView
    // add the element info to marker userData property 
    marker.userData = element
}


// function to check if which icon tapped

func mapView(_ mapView: GMSMapView,didTap marker: GMSMarker) -> Bool {

    // get the element info from marker
    let element = marker.userData
    //code to navigate to detail view
}

希望这会有所帮助!

,

这是一个非常普通的问题,在Swift / Cocoa中,有很多方法可以在对象之间传递数据,例如segues,委托,通知,单例模式,或者只是直接进行初始化(有或没有依赖项注入):

let separateView = SeparateView()
separateView.marker = marker // Note that you need a var defined in your separate view in order to set it sooner,marker is your marker defined from before
navigationController?.pushViewController(separateView,animated: true)
本文链接:https://www.f2er.com/3166400.html

大家都在问