2011-02-12 81 views
11

我開始學習表視圖。我的應用程序使用Tab Bar Controller,所有選項卡都是簡單的視圖。我想添加另一個選項卡,並且在此選項卡中,我試圖實現一個Table樣式的導航控制器。從我讀這些視圖需要一個UINavigation控制器作爲根視圖控制器,但我的標籤欄控制器已經設置了我的根視圖控制器,所以我有點困惑。在選項卡欄控制器中實現表格視圖?

有人可以解釋我應該做些什麼來實現這樣的事情。

回答

17

這是一個很好的問題,大多數新開發Cocoa的開發者總是苦苦思索。您需要考慮應用程序的體系結構,以查看哪些內容對您的需求最有意義,但在大多數情況下,您希望TabBarController成爲爲其他視圖提供服務的主/根控制器,然後從此處配置tabItem視圖根據你需要顯示的數據。

對於您的特殊情況,當您創建新選項卡項時,而不是將UIViewController提供給該tabItem視圖,則需要使用導航控制器。然後,在導航控制器下,你將能夠分配它的根視圖控制器,它應該是UITableViewController的一個實例(或者如果你在視圖中需要的不僅僅是一個UITableView,那麼UIViewController會帶有一個UITableView實例)。

所以層次去有點像這樣

1 - TabBarController

1.1 ----- NavigationController

1.1.1 -------的UITableViewController

1.1.1 -------您的導航控制器堆棧上的其他視圖

1.2 -----您的任何其他視圖tabBarController

這裏是一個很好的視頻教程,這將有助於你用它:http://www.youtube.com/watch?v=LBnPfAtswgw

祝你好運, 羅格

+0

令人驚歎的鏈接兄弟!那正是我所需要的,我剛剛看完了,我已經掌握了我想要的東西。我只需要照顧細節。非常感謝! – cgossain

1

首先表的觀點不一定需要嵌入導航控制器。他們大多數時間,但這不是一個要求。

要添加要創建一個表視圖UITableViewController(或通用UIViewController內嵌有一個UITableView,這取決於你的需要),並把它放在你的UITabBarControllerviewControllers財產。例如:

UIViewController *vc1 = [[FirstViewController alloc] init]; 
UIViewController *vc2 = [[SecondsViewController alloc] init]; 
UITableViewController *tableVC = [[UITableViewController alloc] init]; 
tabBarController.viewControllers = [NSArray arrayWithObjects:vc1, vc2, tableVC, nil]; 

當然,上面的視圖控制器應該是具體的子類,所以你可以實現你的自定義視圖和邏輯。

相關問題