-2

我的应用程序有#hashtags可以选择。在iOS中选择Tabbar项目

我们在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中。

我在做什么错?

+0

UINavigationController * nav = [self.tabBarController.viewControllers objectAtIndex:2]; [nav pushViewController:dest animated:YES];而是直接编写TagDetailViewController * dest = [[TagDetailViewController alloc] initWithNibName:@“TagDetailViewController”bundle:nil]; [self.navigationController pushViewController:dest animated:YES] – 2013-03-13 08:51:03

+0

在IB中创建标签栏有什么问题,并且将navcontrollers包含常规detailviewcontrollers在里面?也许我误解了,但这似乎是你的目标,它是一个应用程序的正常结构,可以在没有任何特殊代码的情况下完成。 – 2013-03-13 09:00:43

+0

@Manobar不改变标签索引。如果我有更改tabIndex的代码,推送将无效 – disappearedng 2013-03-13 19:50:55

回答

1

您可以使用以下方法UITabbarController

[tabBarController setSelectedIndex:2]; 

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

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

希望这可能会帮助您达到您的要求。

+0

你能解释为什么NSNotification是必要的吗? – disappearedng 2013-03-13 19:43:11

+0

当您在tabbarcontroller中选择一个选项卡时,它会引导您分配给该索引的特定导航控制器(在您的情况下为TagVC)。但是在你的要求中,你想进一步移动到下一个VC(TagDetailVC)。因此,您可以使用在TagVC中实现的NSNotification,并将ViewViewController推送到TagDetailVC。让我知道你是否明白我的观点。 – Mrunal 2013-03-14 06:06:37

0

我会尝试这样的(伪):

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

不知怎的,这是工作。

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