5

ストーリーボードで作成し、IBOutlet を介してビュー コントローラーにリンクしたメイン ビューのサブビューで iOS 用 Google Maps SDK を使用しようとしています (UIView からサブクラス化された extraView と呼びます)。SDK 入門ガイドの手順に従うと、SDK は問題なく動作しますが、階層の最上位のビュー (メイン ビュー) を使用するのは望ましくありません。マップを画面の小さな部分に表示し、画面の残りの部分を別の用途に使用したいと考えています。mapView_ オブジェクト (入門ガイドを参照) を self.view ではなく self.extraView に割り当てようとすると、画面全体が黒くなり、コンソール出力に次のエラーが表示されます。

「アプリケーション ウィンドウには、アプリケーションの起動の最後にルート ビュー コントローラーが必要です」

他の誰かがこれを理解しましたか?ドキュメントには何も見つかりません。また、Google が提供するサンプル コードではストーリーボードが使用されていません。

4

2 に答える 2

13

方法は次のとおりです...

  • 作業中のView ControllerにUIViewを追加します
  • そのクラスをGMSMapViewID インスペクターに設定します。

次に、他のアウトレットの場合と同じように、コントロールを押しながらコードにドラッグします。

セッターで遅延してインスタンス化できます...

- (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

例から取ったロードビューコードを削除するだけで問題を解決しました。sberleyが言ったようにビューを追加するだけでうまくいくはずです。

さらに、アイデンティティインスペクターで、変更する必要がある属性はクラスです。少なくともxcode 4.5ではそうです

于 2013-02-25T17:08:48.510 に答える