0

在我正在开发的应用程序中,我有以下导航图:

SplashScreen (VC) ->TabBarController -> (item1) Navigation Controller -> Map -> Homepage -> (item2) Navigation Controller -> List ^

在 TabBarController 之前是一个带有单个按钮的启动画面 (UIViewController),该按钮连接到通向交换机的模态序列。所有其他的segues都是push。

项目#1 是一个视图控制器,它包含一个对象映射,其中包含指向一个单独对象主页的链接,该主页包含有关所选对象的详细信息。

项目 #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];
}

这将我带回地图,但没有来自任一导航控制器的导航元素。

这是我的第一个 iOS 应用程序,我浏览了一些 Apple 的文档并查看了他们的示例代码,但我还没有找到一个专门解决我的问题的应用程序。

谢谢!

4

1 回答 1

0

传递给的 viewControllertabBarController:didSelectViewController应该是您的导航控制器。所以你应该能够调用它的 popToRootViewController 方法。

于 2013-07-12T20:16:39.907 回答