Accesso a un MKMapView attraverso la barra delle schede

voti
4

Ho un'applicazione TabBar e sulla prima scheda ho una MKMapView. Quello che voglio fare è da qualche altra parte nella domanda, cambiare la scheda attiva alla mapview e impostare regione del mapview in base ai dati nella visualizzazione precedente (quello con il tasto per passare alla mapview).

Quello che ho provato è:

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

Questo fa sì che solo l'applicazione per bloccarsi in grado di trovare il metodo che ho creato. Io non credo di aver scelto la strada migliore per attuare questo, ma io non sono davvero sicuro di come dovrei andare su di esso.

[Update] Casting il controller restituito dal tabBarController avuto alcun effetto.

[Risolto] Stavo cercando di lanciare una UINavigationControllermia 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];
È pubblicato 26/01/2010 alle 03:08
fonte dall'utente
In altre lingue...                            


3 risposte

voti
1

Sei sicuro che il controller della vista principale per quella scheda non è un UINavigationController? Se è così, è possibile ottenere il controller della vista principale per quello che dovrebbe essere il vostro UIMapViewController.

Sarebbe bene mettere un riferimento diretto nel AppDelegate però se avete intenzione di essere chiamata da un'altra parte.

Risposto il 26/01/2010 a 06:57
fonte dall'utente

voti
0

Perché non farlo passare attraverso la tua AppDelegate? L'AppDelegate può avere un UITabBarControllere MKMapView(sia via cavo attraverso la creazione di interfacce.) Il UIButtongestore sarebbe quindi anche nel AppDelegate in modo che possa chiamare -[UITabBarController setSelectedView:]e -[MKMapView setRegion:].

Risposto il 26/01/2010 a 05:46
fonte dall'utente

voti
0

Che cosa si vuole fare è creare una sottoclasse o una categoria della UITabBarController che

  1. registri per gli eventi che si definiscono NotificationCenter
  2. gestisce gli eventi con un nuovo selettore. Io generalmente uso fare / ho convenzione di denominazione per loro.

Quando l'evento viene attraverso di impostare il selectedIndex.

Risposto il 26/01/2010 a 05:35
fonte dall'utente

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