Toegang krijgen tot een MKMapView via het tabblad bar

stemmen
4

Ik heb een tabbalk applicatie en op het eerste tabblad Ik heb een MKMapView. Wat ik wil doen is van ergens anders in de toepassing, schakelt u de actieve tabblad om de Mapview en stel de regio van de Mapview op basis van de gegevens in de vorige weergave (die met de knop om te schakelen naar de MapView).

Wat ik heb geprobeerd is:

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

Dit zorgt ervoor dat alleen de app te crashen in staat om de methode die ik heb gemaakt vind. Ik denk niet dat ik de beste weg om dit te implementeren gekozen, maar ik ben echt niet zeker hoe ik zou moeten gaan over.

[Update] Casting de controller geretourneerd door het tabBarControllerhad geen effect.

[Opgelost] Ik probeerde om een cast UINavigationControlleraan mijn 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];
De vraag is gesteld op 26/01/2010 om 03:08
bron van user
In andere talen...                            


3 antwoorden

stemmen
1

Weet je zeker dat de hoofdweergave controller voor dat tabblad is geen UINavigationController? Zo ja, kunt u de wortel view controller voor hetgeen uw UIMapViewController moet krijgen.

Het zou goed zijn om een ​​directe verwijzing zet in de AppDelegate maar als je gaat om te worden bellen van elders.

antwoordde op 26/01/2010 om 06:57
bron van user

stemmen
0

Waarom niet route via uw AppDelegate? De AppDelegate kan hebben UITabBarControlleren de MKMapView(zowel bedraad via de interfacebus builder.) De UIButtonhandler zou dan ook in de AppDelegate zodat het kan noemen -[UITabBarController setSelectedView:]en -[MKMapView setRegion:].

antwoordde op 26/01/2010 om 05:46
bron van user

stemmen
0

Wat u wilt doen is het creëren van een subklasse of een categorie van de UITabBarController dat

  1. registers voor NotificationCenter gebeurtenissen die u definieert
  2. zorgt voor de evenementen met een nieuwe selector. Ik gebruik het algemeen wel / niet naamgeving voor hen.

Wanneer het evenement via komt u de selectedIndex ingesteld.

antwoordde op 26/01/2010 om 05:35
bron van user

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