在我正在处理的应用程序中,我有以下导航图:
SplashScreen(VC) - > TabBarController - > (第1项)导航控制器 - >地图 - >主页 - > (第2项)导航控制器 - >列表^
在TabBarController之前是一个启动画面(UIViewController),它有一个按钮,连接到通向交换机的模态选项。所有其他的细分都在推动。
项目#1是一个视图控制器,它包含一个对象映射,其中包含指向单独对象主页的链接,该主页包含有关所选对象的详细信息。
Item#2是一个UITableViewController,它包含对象列表,也链接到同一对象主页UIViewController。
这两个也嵌套在包含每个项目和浮标主页的导航控制器中。
现在如果您在地图上选择一个浮标并为其启动浮标主页,然后转到列表选项卡并选择一个浮标,如果您再次选择地图标签,它仍会显示主页第一个选定的浮标。
我想要做的就是让用户点击任一标签,直接将它们带到地图或列表中 - 永远不要回到之前选择的浮标。
我一直在寻找一段时间,而我最接近的就是这个,在我的AppDelegate.m里面的didSelectViewController:
NSInteger tag = viewController.tabBarItem.tag;
if (tag == 4)
{
NSLog(@"Map Button........");
UIStoryboard* sb = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController* vc = [sb instantiateViewControllerWithIdentifier:@"TheMap"];
self.window.rootViewController = vc;
UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController.tabBarController;
[navigationController pushViewController:vc animated:YES];
}
这会将我带回地图,但没有Nav Controller中的导航元素。
这是我的第一个iOS应用程序,我浏览了一些Apple的文档并浏览了他们的示例代码,但我没有找到专门解决我的问题的应用程序。
谢谢!
答案 0 :(得分:0)
传递给tabBarController:didSelectViewController
的viewController应该是您的导航控制器。所以你应该能够调用它的popToRootViewController方法。