Der Zugriff auf eine MKMapView durch die Tableiste

stimmen
4

Ich habe eine Tabbar Anwendung und auf dem ersten Registerkarte Ich habe ein MKMapView. Was ich von woanders in der Anwendung tun möchten , ist, schalten Sie die aktive Registerkarte auf die mapview und stellen Sie die Region mapview basierend auf den Daten in der vorherigen Ansicht (die mit der Taste zum mapview wechseln).

Was ich habe versucht, ist:

[self.tabBarController setSelectedView:0];
UIMapViewController *mapView = [self.tabBarController.viewControllers objectAtIndex:0];
[mapView displayBookmarkAnnotation:bookmark];

Dies bewirkt, dass nur die App zum Absturz nicht in der Lage, die Methode zu finden, die ich schaffte. Ich glaube nicht, dass ich den besten Weg gewählt, dies umzusetzen, aber ich bin wirklich nicht sicher, wie ich vorgehen soll.

[Update] Casting die Steuerung durch die zurück tabBarControllerhatte keine Wirkung.

[Gelöst] Ich habe versucht , eine zu werfen , UINavigationControllerum meine mapView

[self.tabBarController setSelectedView:0];
UINavigationController *navController = [self.tabBarController.viewControllers objectAtIndex:0];
//if the tab has other views open, return to mapView
[navController popToRootViewControllerAnimated:YES];
UIMapViewController *mapView = (UIMapViewController *)[navController visibleViewController];
[mapView customMessage:object];
Veröffentlicht am 26/01/2010 um 03:08
quelle vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
1

Sind Sie sicher, dass der Haupt-View-Controller für das Register ist kein UINavigationController? Wenn ja, können Sie den Root-View-Controller für das bekommen, die Ihre UIMapViewController sein sollte.

Es wäre gut, einen direkten Bezug auf den AppDelegate zu setzen, obwohl, wenn Sie es von anderswo Aufruf werden werden.

Beantwortet am 26/01/2010 um 06:57
quelle vom benutzer

stimmen
0

Warum nicht Route es durch Ihre AppDelegate? Die AppDelegate kann eine haben UITabBarControllerund die MKMapView(sowohl durch Interface Builder verdrahtet.) Der UIButtonHandler würde dann in der AppDelegate sein auch so , dass es so nennen kann , -[UITabBarController setSelectedView:]und -[MKMapView setRegion:].

Beantwortet am 26/01/2010 um 05:46
quelle vom benutzer

stimmen
0

Was Sie tun möchten, ist eine Unterklasse oder eine Kategorie des UITabBarController erstellen, die

  1. Register für NotificationCenter Ereignisse, die Sie definieren
  2. behandelt die Ereignisse mit einem neuen Wähler. Ich benutze im Allgemeinen / wurde Konvention für sie zu benennen.

Wenn das Ereignis durch kommt stellen Sie die selectedIndex.

Beantwortet am 26/01/2010 um 05:35
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more