質問

私のアプリで私がしていることは次のとおりです:

コアデータにいくつかのデータをロードし、それが終了したら、アプリは次のビュー(googleマップ)にセグエする必要があります

[self performSegueWithIdentifier:@"loadMap" sender:self];

しかし、私はこのエラーを取得します

Terminating app due to uncaught exception 'GMSThreadException', reason: 'All calls to the Google Maps SDK for iOS must be made from the UI thread'

私はこのすべてを行うが、ボタンをタップしてセグエを作ると、すべてが正常に動作します。

ストーリーボードのGoogleマップビューコントローラには、initコードを持つGMSMapViewビューアウトレットがあります

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:45.331875
                                                            longitude:14.450455
                                                                 zoom:14];

    self.mapView.camera = camera;

    GMSMarker *marker = [[GMSMarker alloc] init];
    marker.position = camera.target;
    marker.title = @"Test title";
    marker.snippet = @"Lorem ipsum...";
    marker.map = self.mapView;

誰でもここで私を助けることができますか?Storyboardを使用してgoogleマップでview controllerをプログラムでロードするにはどうすればよいですか?

役に立ちましたか?

解決

例外は、バックグラウンドスレッドでセグエを実行しようとしていることを示しているようです。クラッシュを防ぐには、代わりにメインスレッドを使用する必要があります。あなたの包みなさい performSegueWithIdentifier:sender: メインスレッドを使用するには、次のようにします:

dispatch_async(dispatch_get_main_queue(), ^{
    [self performSegueWithIdentifier:@"loadMap" sender:self];
});

他のヒント

スウィフトのために:

dispatch_async(dispatch_get_main_queue(), {})

それらのカーリーにコードを投げます。..

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top