2013-02-25 9 views
5

Próbuję użyć zestawu SDK serwisu Mapy Google dla systemu iOS w widoku głównym widoku utworzonego w scenorysie i połączonego z kontrolerem widoku za pomocą IBOutlet (I nazwał to extraView, podklasy z UIView). Kiedy postępuję zgodnie z instrukcjami zawartymi w przewodniku dla początkujących SDK, SDK działa dobrze, ale wykorzystuje najwyższy widok w hierarchii (widok główny), którego nie chcę. Chcę, aby moja mapa znajdowała się w mniejszej części ekranu i wykorzystywać resztę ekranu do czegoś innego. Kiedy próbuję przypisać obiekt mapView_ (patrz przewodnik wprowadzający) do self.extraView zamiast self.view, cały ekran jest czarny i pojawia się błąd w wyjściu konsoli:Używanie zestawu SDK do serwisu Mapy Google w widokach innych niż główny

"Oczekuje się, że okna aplikacji będą mieć kontroler widoku root na końcu uruchamiania aplikacji "

Czy ktoś inny to wymyślił? Nie mogę znaleźć niczego w dokumentacji, a przykładowy kod Google zapewnia, że ​​nie ma scenorysu.

Odpowiedz

13

Oto jak ...

  • dodać UIView w kontroler widoku, w którym pracujesz
  • zestawu jest to klasa będzie GMSMapView w Inspektorze tożsamości.

Następnie przeciągnij i przeciągnij go do kodu tak, jak w przypadku innego gniazdka.

można leniwie instancję go w seter ...

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

Aby wyświetlić mapę przykładowy kod Google'a staje ...

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:1.285 
                  longitude:103.848 
                   zoom:12]; 
    self.mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; 
+0

Dzięki za szybką odpowiedź. Niestety wciąż napotykam ten sam problem. Miałem kilka dodatkowych rzeczy w moim drugim projekcie, więc utworzyłem nowy projekt zgodnie ze wskazówkami Google do tego listu. Działało zgodnie z oczekiwaniami, więc usunąłem kod z metody loadView i dokładnie podążyłem za wskazówkami. Umieściłem drugi blok kodu w metodzie nazwanej drawMap, która jest wywoływana przez metodę viewDidLoad przy użyciu performSelector: withObject: afterDelay: po 5 opóźnieniu. To pokazało, że ostrzeżenie pojawia się PRZED narysowaniem mapy. drawMap jest nadal wywoływany, ale nie jest rysowana żadna mapa. – user2105505

+2

Wymyśliłem! Twoje rozwiązanie działało idealnie, po prostu zapomniałem usunąć pustą metodę loadView. Ponieważ nie zawierał niczego, powodował ten błąd. Dzięki! – user2105505

+0

to było niesamowite: D – Omarj

3

I rozwiązać mój problem tylko usunięcie kodu loadview że Wziąłem z przykładu. Wystarczy dodać widok, ponieważ sberley powinien działać.

tylko na rzecz więcej, na inspektora tożsamości, że atrybut, że trzeba zmienić to klasa, przynajmniej jest na Xcode 4.5

+0

Dzięki - wyjaśniłem powyżej, aby odzwierciedlić Twoją sugestię – sberley

Powiązane problemy