我想通过属于tableView中的单元格的按钮在地图上设置位置。问题是,如何获取我的ViewController的当前瞬间而不是创建一个新的?我的CustomCell中的方法如下:
@IBAction func mapButton(sender: AnyObject) {
ViewController().showPinOnMap(Location)
}
}
我最终将mapView等于nil,我猜是因为我实例化新的ViewContoller而不是访问已存在的那个。 我读过关于类型方法的内容,但我不确定如何处理它们。在我的ViewController中,我试过:
class func showPinOnMap(location: CLLocationCoordinate2D?){
if(location != nil){
map.setCenterCoordinate(location!, animated: true)
}
}
但会导致以下错误
我想整个事情是关于访问ViewController实例而不是创建一个全新的实例(如果我错了,请纠正我)。
我很感激任何帮助,提前谢谢
答案 0 :(得分:2)
您没有调用ViewController
的实际实例,而是调用类本身。 map
但是ViewController
的实例的成员。要解决此问题,您必须在相应的实例上调用map
。
这可以通过回调来完成。例如。在CustomCell
中定义一个变量:
var onMapButtonCallback : ((CLLocationCoordinate2D) -> Void)?
然后您可以从mapButton
执行:
@IBAction func mapButton(sender: AnyObject) {
onMapButtonCallback?(Location)
}
剩下要做的事情就是连接ViewController
中的回调,我假设它也实例化CustomCell
:
customCell.onMapButtonCallback = { location in self.showPinOnMap(location) }