Pergunta

O que faço no meu aplicativo é o seguinte:

Eu carrego alguns dados nos dados principais e, quando terminar, o aplicativo precisa seguir para a próxima visualização (google map)

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

mas eu recebo esse erro

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

Se eu fizer tudo isso, mas seguir com o toque em um botão, tudo funcionará bem.

O controlador de visualização de mapa do Google no storyboard possui uma saída de visualização GMSMapView com código de inicialização

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;

Alguém pode me ajudar aqui?Como posso carregar o controlador de visualização com o Google Maps programaticamente usando o storyboard?

Foi útil?

Solução

A exceção parece indicar que você está tentando executar uma sequência no thread em segundo plano.Para impedir que ele trave, você precisa usar o thread principal.Embrulhe seu performSegueWithIdentifier:sender: da seguinte maneira para usar o thread principal:

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

Outras dicas

Para rápido:

dispatch_async(dispatch_get_main_queue(), {})

Jogue o código nesses cachos ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top