使用自定义segue时保留GMSMapView的状态

时间:2014-04-11 08:46:11

标签: ios objective-c gmsmapview swrevealviewcontroller

目前,我正在使用SWRevealViewController为我的项目创建侧边栏和google map api

https://github.com/John-Lluch/SWRevealViewController

这就是问题所在。每次我使用侧边栏切换到ViewControllers并返回包含MapViewController的{​​{1}}时,GMSMapView会重新加载到我的位置(我在{{1}中设置它方法)。

我怎样才能阻止GMSMapView每次都重新加载?


到目前为止我尝试过的事情: 将viewDidLoad变为单身并将其设置为MapViewController,但它不起作用。我得到的只是黑屏。

MapViewController的代码:

destinationViewController

2 个答案:

答案 0 :(得分:0)

确保您不会在viewWillAppearviewDidAppear中更改地图相机的位置。

如果不是这种情况,您可以在离开视图控制器之前保存摄像机位置,并在再次显示控制器时将其恢复。

答案 1 :(得分:0)

你的问题已经有一段时间了,但是这些天我遇到了类似的问题,我想我找到了保留GMSMapView状态的方法(虽然我不知道是否{{} 1}}会做出任何改变)。

正如你所说,我的想法是拥有一个“单身人士”,而不是我为SWRevealViewController制作的控制器。尝试通过创建根的GMSMapView属性GMSMapView来创建它的子类,并在子类的UINavigationController上初始化地图。

接口:

ViewDidLoad

类别:

#import <UIKit/UIKit.h>
#import <GoogleMaps/GoogleMaps.h>

@interface TEST1NavigationController : UINavigationController

@property GMSMapView *mapView;

@end

然后,在每个单独的控制器中,您可以向自定义导航控制器询问#import "TEST1NavigationController.h" ... @implementation TEST1NavigationController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:40.7056308 longitude:-73.9780035 zoom:15]; self.mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; self.mapView.myLocationEnabled = YES; } ... 并使用它。

GMSMapView

这样,状态应保留在导航控制器的控制器内。