在我的 View Controller 中,MKMapView
有一个导出,并且 View Controller 自然符合MKMapViewDelegate
来执行MapKit操作。
我正在尝试在项目进一步发展之前迁移到MVVM模型,以使其保持整洁。但是,我在如何将所有MKMapViewDelegate
方法移动到另一个文件(其中MKMapView
导出位于 View Controller 中)的空白中。
谢谢。
附言我正在用Swift编码
最佳答案
当我创建与 View Controller 分离的GMSMapViewDelegate时,我遇到了类似的情况。
我做了什么,您可以尝试:
MapModelView.swift
class MapModelView:NSObject, MKMapViewDelegate {
let mapView:MKMapView!
init(screenSize: CGRect) {
// generate the map view at the size of the screen
// otherwise it won't be seen
self.mapView = MKMapView(frame: CGRectMake(0, 0, screenSize.width, screenSize.height)
super.init()
self.mapView.delegate = self
}
}
ViewController.swift
class ViewController: UIViewController {
@IBOutlet weak var mapView: MKMapView!
override func viewDidLoad() {
// Get the screen size for the map view creation
let screenSize: CGRect = UIScreen.mainScreen().bounds
mapKitOperationsDelegate = MapKitOperations(screenSize: screenSize)
mapView = mapKitOperationsDelegate.getMapView()
view.addSubview(mapView)
}
(添加02/08/2018)
PS
正如Chanchal Raj提到的“MapView是一个UI组件,不应将其放在ViewModel类中”。当时是我的解决方案,但从概念上讲(使用MVVM),这不是正确的方法。