我有一个tabbar应用程序,在第一个标签上我有一个MKMapView
。我想要做的是从应用程序的其他地方,将活动选项卡切换到mapview并根据上一个视图中的数据设置mapview的区域(带有切换到mapview的按钮的数据)。
我尝试的是:
[self.tabBarController setSelectedView:0];
UIMapViewController *mapView = [self.tabBarController.viewControllers objectAtIndex:0];
[mapView displayBookmarkAnnotation:bookmark];
这只会导致应用程序崩溃,无法找到我创建的方法。 我不认为我选择了实现这一目标的最佳途径,但我真的不确定应该怎么做。
[更新]
转换tabBarController
返回的控制器没有任何效果。
[解决]
我试图将UINavigationController
投射到我的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];
答案 0 :(得分:2)
您确定该标签的主视图控制器不是UINavigationController吗?如果是这样,您可以获得应该是您的UIMapViewController的根视图控制器。
如果要从其他地方调用它,最好在AppDelegate中直接引用。
答案 1 :(得分:1)
为什么不通过你的AppDelegate路由它? AppDelegate可以有一个UITabBarController
和MKMapView
(两个都通过接口构建器连接。)UIButton
处理程序也可以在AppDelegate中,以便它可以调用-[UITabBarController setSelectedView:]
和-[MKMapView setRegion:]
。
答案 2 :(得分:0)
你想要做的是创建一个子类或UITabBarController的类别
当事件发生时,您设置selectedIndex。