2011-08-01 51 views
0

我的應用項目具有基本的5個頁面視圖,每個頁面視圖通過底部的標籤欄進行鏈接,當我切換頁面時這5個頁面中的每個頁面上都有標籤欄,並且工作得很好。在Xcode 4中,如何在使用按鈕切換視圖時保留底部的標籤欄

其中5個(tab)頁面中的兩個就像索引,我有按鈕鏈接轉到輔助頁面。當我編程按鈕進入輔助頁面時,鏈接工作正常,但這些頁面底部的標籤欄不再存在。每個輔助頁面都有一個返回按鈕,可以返回到它們鏈接的索引頁面,但當我鏈接出去時,那裏的標籤欄也不見了。

作爲一個實驗,爲了排除次要頁面是點擊按鈕後丟失標籤欄的問題,我將其中一個標籤直接鏈接到輔助頁面,並且該實驗完美運行。

這裏是我用來連接起來,走出去按鈕的代碼: 在類頁tabIndex.h:

//I declared this method after the last "}"  
    -(IBAction)switchView:(id)sender; 

在類頁tabIndex.m:

-(IBAction)switchView:(id)sender { 
MyNewPageViewController *newPagelink = [[MyNewPageViewController alloc] initWithNibName:nil bundle:nil]; 
[self presentModalViewController:newPageLink animated:YES]; 

[newPagelink release];} 

然後我顛倒了名稱,並在相應的.h & .m文件中爲後退按鈕MyNewPageViewController執行了相同的操作,並將IBAction稱爲返回「switchBack」

我希望有人能幫助我與這個問題的修復...

非常感謝,

--Rob

回答

0

這聽起來像你可能會結合使用導航控制器會更好與標籤欄控制器。將導航控制器與標籤欄控制器一起使用可讓您爲每個標籤分層顯示多個視圖,同時始終保持標籤欄可見。

當您想要轉到給定控制器的輔助頁面時,您可以使用-pushViewController:animated:將新控制器推到導航堆棧上;要返回到第一個控制器,您只需-popViewControllerAnimated:。對於可以具有多個視圖的每個選項卡,您將擁有一個導航視圖控制器,並將主視圖的視圖控制器用作導航控制器的根視圖控制器。

有關using a nav controller with a tab bar controller的完整詳細信息,請參閱視圖控制器編程指南

0

聽起來好像你有5個視圖控制器和5個視圖控制器中的2個需要使用導航控制器。對於那些vc,你仍然希望看到標籤欄,但需要能夠推送和彈出其他視圖到它們。這很簡單。這裏是你將如何設置選項卡汽車控制器 - 它假設前兩個視圖控制器是那些需要額外推意見:

MyVC1 *vc1= [[MyVC1 alloc] initWithNibName:@"MyVC1View" bundle:nil]; 
MyVC2 *vc2= [[MyVC1 alloc] initWithNibName:@"MyVC2View" bundle:nil]; 
MyVC3 *vc3= [[MyVC1 alloc] initWithNibName:@"MyVC3View" bundle:nil]; 
MyVC4 *vc4= [[MyVC1 alloc] initWithNibName:@"MyVC4View" bundle:nil]; 
MyVC5 *vc5= [[MyVC1 alloc] initWithNibName:@"MyVC5View" bundle:nil]; 

// these are the VCs you need to push/pop from 
UINavigationController *firstNavController = [[UINavigationController alloc] initWithRootViewController:vc1]; 
UINavigationController *secondNavController = [[UINavigationController alloc] initWithRootViewController:vc2]; 

UITabBarController *tabBar = [[UITabBarController alloc] initWithNibName:nil bundle:nil]; 
tabBar.viewControllers = [NSArray arrayWithObjects:firstNavController, secondNavController, vc3, vc4, vc5, nil];
與VC1和VC2

現在你可以把意見到導航堆棧如通常那樣,例如 [self.navigationController pushViewController:vc1B animated:YES];

相關問題