5

我正在尝试在我在情节提要中创建并通过 IBOutlet 链接到视图控制器的主视图的子视图中使用适用于 iOS 的 Google Maps SDK(我将其称为 extraView,从 UIView 子类化)。当我按照 SDK 入门指南中的步骤操作时,SDK 工作得很好,但它使用了层次结构中的最上面的视图(主视图),这是我不想要的。我希望我的地图位于屏幕的较小部分,并将屏幕的其余部分用于其他用途。当我尝试将 mapView_ 对象(请参阅入门指南)分配给 self.extraView 而不是 self.view 时,整个屏幕都是黑色的,并且在控制台输出中出现错误:

“应用程序窗口应该在应用程序启动结束时有一个根视图控制器”

有没有其他人知道这一点?我在文档中找不到任何内容,并且 Google 提供的示例代码不使用情节提要。

4

2 回答 2

13

就是这样...

  • 将 UIView 添加到您正在工作的视图控制器中
  • 将它的类设置为GMSMapView身份检查器。

然后将它控制拖到您的代码中,就像您对任何其他插座一样。

你可以在它的 setter 中懒惰地实例化它......

- (void) setMapView:(GMSMapView *)mapView {
    if (!mapView) {
        mapView = [[GMSMapView alloc] initWithFrame:mapView.bounds];
    }
    _mapView = mapView;
}

要显示地图,Google 的示例代码变为...

  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:1.285
                                                          longitude:103.848
                                                               zoom:12];
  self.mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
于 2013-02-25T07:36:53.217 回答
3

我解决了我的问题,只是删除了我从示例中获取的 loadview 代码。只需像 sberley 所说的那样添加一个视图就可以了。

更重要的是,在身份检查器上,您必须更改的属性是类,至少它在 xcode 4.5 上

于 2013-02-25T17:08:48.510 回答