2011-03-14 66 views
0

我正在構建一個簡單的應用程序,顯示有關大多數汽車品牌的信息。將數據傳遞到子視圖

當rootViewController加載視圖時,我有rootViewController來顯示數據行(例如奔馳,寶馬,豐田等)。在這種觀點下,我想要展示每個汽車品牌的信息。所有品牌描述都是一樣的(建立年份,型號等)。因爲所有汽車品牌的視圖結構都是相同的,所以我只用一個視圖控制器來顯示信息。

問題是我不知道該怎麼做? 如何將描述數據從rootViewController傳遞給displayBrandInformation?

+0

此鏈接可能對您有用http://cocoadevcentral.com/d/learn_objectivec/ – Altealice 2011-03-14 18:13:33

回答

0

你必須子類化tableViewController,最終彈出到導航控制器堆棧。在子類型tableViewController的內部,你應該有一個數組(或其他數據結構)來保存相關信息,並且應該公開(使用@synthesize)。然後,在初始化新的tableView之後,但在將其推入堆棧之前,請設置數組。例如,在你的RootViewController.m:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)newIndexPath { 
     SubmenuViewController *svc = [[SubmenuViewController alloc] initWithStyle:UITableViewStyleGrouped]; 
     svc.arr = someArray; //this array holds your entire Submenu, this should be based on whatever the user selected in newIndexPath.row 
     [svc setTitle:@"Some Title"]; 
     [self pushViewController:svc animated:YES]; 
} 

由於SubmenuViewController是的UITableViewController的子類中,(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath裏,你將返回基於ARR陣列上的正確的單元格。

編輯:我要指出的是,在我的例子,RootViewController的子類的UINavigationController

+1

爲什麼繼承UINavigationController?我不認爲有這種需要。 – Caleb 2011-03-14 19:38:47

+0

你是對的,它不需要繼承UINavigationController - 我正在尋找我自己的項目之一,我在那裏做。 +1(但你需要保持一個參考,很明顯) – Mirkules 2011-03-14 20:17:00

+0

很高興我們同意 - 也許我錯過了一些東西。每個視圖控制器都通過其「導航控制器」屬性引用其導航控制器。因此,爲了完整性,您可以通過將最後一行更改爲'[self.navigationController pushViewController ...];' – Caleb 2011-03-14 20:30:43

0

你RootViewController的不加載一個視圖(或不應該,反正),它創建一個視圖控制器,然後將管理細節視圖。 rootViewController應該爲詳細視圖控制器提供任何需要完成其工作的數據;在這種情況下,這可能是一個包含特定品牌數據的對象。

相關問題