当我在两个视图控制器之间切换时,我试图找到一种方法来保留地图和缩放地图视图。
现在发生的事情是,每当我从子视图控制器返回时,mapview都会重新初始化,因此也会重新初始化userTrackingMode和userLocation。
class MainViewController: UIViewController {
@IBOutlet var mapView: MKMapView!
override func viewDidLoad() {
super.viewDidLoad()
initLocationManager()
}
}
extension MainViewController: MKMapViewDelegate {
func initLocationManager() {
mapView.showsUserLocation = true
mapView.setUserTrackingMode(.Follow, animated: true)
}
func stopLocationServices() {
mapView.setUserTrackingMode(.None, animated: true)
}
func mapView(mapView: MKMapView, regionWillChangeAnimated animated: Bool) {
if mapViewRegionDidChangeFromUserInteraction() {
mapView.setUserTrackingMode(.None, animated: false)
}
}
func centerMapToUser() {
mapView.setUserTrackingMode(.Follow, animated: true)
}
func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {
guard annotation is MapAnnotation else {
return nil
}
return MapAnnotationView(annotation: annotation, reuseIdentifier: annotation.description)
}
}
是否有特定的segue阻止了父视图的重新分配,或者我正在考虑存储所需的区域。
您怎么看?
答案 0 :(得分:0)
你可以尝试像这样的懒惰实现。
@property (nonatomic,strong) MapView *mapView;
- (MapView *)mapView
{
if (!_mapView) {
_mapView = [MapView new];
}
return _mapView;
}
或许,只有将房产从弱房改为强房才能解决您的问题。 如果没有,请提供有关您的代码的更多信息。