在iOS中选择Tabbar项

时间:2013-03-13 08:48:31

标签: iphone ios objective-c uinavigationcontroller uitabbarcontroller

我的应用有#hashtags可以选择。

我们的TabBar,MainVC,ProfileVC和TagVC中只有3个选项卡。 TagDetailVC通常通过TagVC访问。

当用户选择标签时,她将被定向到TagDetailViewController。

编辑我在故事板上连接了一个tabbarController。

现在我有这个:

TagDetailViewController *dest = [[TagDetailViewController alloc] init];
UINavigationController *nav = [self.tabBarController.viewControllers objectAtIndex:2];
[nav pushViewController:dest animated:YES];

但是,我现在看到的只是TagVC。我在TagDetailVC的viewDidLoad中放置了一个日志语句,但没有显示。

为了记录,这就是我的故事板的组织方式:

TabBarController -> NavigationVC -> MainVC ... 
                 -> NavigationVC -> ProfileVC ...  
                 -> NavigationVC -> TagVC -> TagDetailVC

我有兴趣让tabBar选择TagVC,然后将TagDetailVC推送到TagVC的navigationController。用户按下标记时我期望的行为是: 1.在TagVC中选择了Tab 2. TagDetailVC被推送到TagVC的NavigationVC。

我做错了什么?

3 个答案:

答案 0 :(得分:1)

您可以使用以下方法UITabbarController

  [tabBarController setSelectedIndex:2];

根据我的理解,这将是:NavigationVC -> TagVC

现在使用NSNotification,并将视图控制器推送到TagDetailVC

希望这可以帮助您实现您的要求。

答案 1 :(得分:0)

我会尝试这样的事情(伪代码):

on tagTapped
    tagDetailViewController = (alloc, config TagDetailVC)
    (tab controller).viewControllers[2].viewControllers = @[ new TagVC, tagDetailViewController ] ;
    (tab controller).selectedIndex = 2

答案 2 :(得分:0)

不知何故,这是有效的。

self.tabBarController.selectedIndex = TAB_INDEX_TAGS;
UINavigationController *nav = [self.tabBarController.viewControllers objectAtIndex:2];
[nav pushViewController:dest animated:YES];