在Swift 1.2中,我有以下内容:
class UVC: NSViewController, MKMapViewDelegate {
// ...
// **************************************
// MARK: MapView Delegate
// **************************************
func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer! {
if overlay is OSGBTiles {
return OSGBTilesRenderer(tileOverlay: overlay as! OSGBTiles)
} else if overlay is ESRI {
return ESRIRenderer(shapeFileOverlay: overlay as! ESRI)
} else if overlay is MKTileOverlay {
return MKTileOverlayRenderer(overlay: overlay)
} else {
print("Unknown overlay")
}
return nil
}
}Swift 2已经将mapView:rendererForOverlay的定义更改为现在返回MKOverlayRenderer而不是MKOverlayRenderer!,并且不允许我返回nil (不足为奇),因为MKOverlayRenderer不是NilLiteralConvertible。但是,文档( Xcode 7中)仍然说:
返回值 在地图上显示指定覆盖层时要使用的渲染器。如果返回“零”,则不会为指定的覆盖对象绘制任何内容。
如果通过一个我不认识的覆盖层,我应该返回什么?
发布于 2015-06-27 06:57:42
根据最近的MKMapView.h,新的函数声明现在是:
// Current renderer for overlay; returns nil if the overlay is not shown.
@available(iOS 7.0, *)
func rendererForOverlay(overlay: MKOverlay) -> MKOverlayRenderer?https://stackoverflow.com/questions/30750560
复制相似问题