2013-03-06 31 views
1

從NSArray中選擇對象一個UITableView我有一個視圖控制器與tableView,我也有以下NSArray稱爲dag重新加載取決於細胞選擇

[{"ID":67,"ParentsID":0,"Title":"Products"}, 
{"ID":68,"ParentsID":67,"Title":"Class A"}, 
{"ID":69,"ParentsID":67,"Title":"Class B"}, 
{"ID":70,"ParentsID":68,"Title":"Recurrent"}, 
{"ID":71,"ParentsID":68,"Title":"Non Recurrent"}, 
{"ID":72,"ParentsID":70,"Title":"Basic"}, 
{"ID":73,"ParentsID":70,"Title":"Advanced"}, 
{"ID":74,"ParentsID":71,"Title":"Incentives"}] 

我已經能夠使用tableView以鍵"ParentsID"等於"0"顯示項目的標題。換句話說,我加載表:

"Products" //from `{"ID":67,"ParentsID":0,"Title":"Products"}`. 

現在,當我選擇了的tableView行「產品」,我想的tableView重新加載,並顯示其"ParentsID"等於"ID"項目該「產品」項目(67)。
即:選擇「產品」將載入:

"Class A" //from {"ID":68,"ParentsID":67,"Title":"Class A"}, and 
"Class B" //from {"ID":69,"ParentsID":67,"Title":"Class B"} 
      //because their ParentsID is equal to the ID of "Products" 

那麼我想這種行爲要麼選擇「A類」或「B類」何時繼續,等等。

我該怎麼做?

我認爲我將不得不實例化一個新的tableview在didSelectRowAtIndexPath作爲參考價值的ID,但我不知道該怎麼做,或者如果這是可能的。

在此先感謝!

+0

假設您有一個導航控制器,您可以讓新控制器上網並將其推入導航控制器堆棧 – 2013-03-06 20:21:34

+0

或者如果您不需要,它將是一個關閉,你可以呈現該子視圖控制器。 – 2013-03-06 20:22:07

+0

@GradyPlayer我有一個導航控制器,我如何實例化新的並將其推入堆棧?你能否提供一些示例代碼? – 2013-03-06 20:26:42

回答

2

這是決策層按層次結構的意見表和導航控制器的一般方法:

  1. 創建UITableViewDataSource類,存儲您NSArrayint parentId
  2. UINavigationController添加到您想要顯示層次結構的屏幕
  3. 創建控件米勒,對於表格
  4. UITableView嵌入添加的初始化上述控制器,取入步驟1
  5. 提供一個處理程序表項目選擇的事件所定義的數據源。

在步驟5中的事件處理程序,獲取當前行的ID,從步驟1實例爲ID的新的數據源,然後,通過從步驟4調用初始化實例化來自步驟3的新視圖控制器,並將新創建的控制器從第2步推入導航控制器堆棧。

+0

「UITableViewDataSource」類是什麼意思?用於存儲「NSArray」和「int parentID」的「NSObject」或「NSData」的子類? – 2013-03-06 21:41:41

+0

@JuanAndres我的意思是你的['UITableViewDataSource']的實現(http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDataSource_Protocol/Reference/Reference.html),即提供的類'tableView:cellForRowAtIndexPath:'和'tableView:numberOfRowsInSection:'方法。當只有一個表格可以顯示時,它們通常與視圖控制器結合使用,但我不想爲此做出這樣的假設。 – dasblinkenlight 2013-03-06 22:03:00

1

你可以有內部NavigationController你的情況下有兩種viewControllers,上firstViewController你能夠具有其中的所有產品的UITableView,當你選擇的任何產品,你可能會推動這將是你的secondViewController一個新的觀點,和第二視圖還可以有一個UITableView或任何事情取決於你想如何顯示從行中選擇的數據。 它看起來像這樣的firstViewController

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 

    SecondViewController *secondViewController=[[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil]; 

    // save the selected Row data and in some string of secondViewController 
    secondViewController.dataString=[self.idList objectAtIndex:row]; 

[[self navigationController] pushViewController:secondViewController animated:YES]; 

}