1

我有一个 ViewController 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来显示 Key"ParentsID"等于的项目的标题"0"。换句话说,我正在加载表格:

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

现在,当我在 tableView 中选择“Products”行时,我希望 tableView 重新加载并显示"ParentsID"等于"ID"该“Products”项 (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 类”等时继续这种行为。

我怎样才能做到这一点?

我认为我必须实例化一个新的 tableviewdidSelectRowAtIndexPath以作为参考值的 ID,但我不知道该怎么做或者这是否可能。

提前致谢!

4

2 回答 2

2

以下是使用表格和导航控制器制作逐级层次结构视图的一般方法:

  1. 创建一个UITableViewDataSource类来存储你的NSArrayint parentId
  2. 将 a 添加UINavigationController到要显示层次结构的屏幕
  3. 创建UITableView为您的表嵌入的控制器
  4. 向上述控制器添加一个初始化程序,该控制器采用步骤 1 中定义的数据源
  5. 为表项选择事件提供处理程序。

在第 5 步的事件处理程序中,获取当前行的 ID,从第 1 步为该 ID 实例化一个新数据源,然后通过调用第 4 步的初始化程序从第 3 步实例化一个新的视图控制器,并推送新创建的控制器从步骤 2 到导航控制器的堆栈。

于 2013-03-06T20:49:42.463 回答
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];

}
于 2013-03-06T20:44:43.613 回答