-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];