您可以创建一个基于导航的表,链接到ipad上的多个detailview控制器

时间:2012-07-26 08:59:29

标签: ipad ios5 uisplitviewcontroller

有没有办法设计具有以下结构的应用程序。我已经尝试过这么多教程,但没有一个能做我想做的事。我想知道是不是因为它无法完成。

我想要一个SplitViewController,Masterview有一个Tableview,里面有多个项目。每个项目都会推送到一个新的Masterview表,该表包含可以随后选择的项目。

如果在第一个子菜单中选择了一个项目,它将打开DetailViewController1并显示相关信息。

如果在单独的子菜单项中选择了一个项目,它将打开DetailViewController2并显示信息。

我查看过Apple的MultipleDetailView Controller教程,但它仅适用于单级MasterViewController表。我可以在MasterDetailController中放置一个navigationcontroller,然后仍然可以推送到新的detailviewcontrollers吗?

在AppDelegate中,您选择了子视图,那么您将如何根据选择更改子视图?

我也试过使用故事板并使用“替换”样式的segue获得了部分解决方案。我发现我可以有一个基于导航的MasterViewController,它推送到新的detailviewControllers,但我无法让popovercontroller正常工作。我无法显示工具栏并给我按钮以重新显示MasterViewController。

希望很清楚。感谢

1 个答案:

答案 0 :(得分:0)

以下适用于我在iOS 6上使用Master Detail模板和故事板。我正在使用Xcode 4.6.2

  1. 修改MasterViewController的代码以消除您不需要的东西,然后创建它的子类,例如。 SubviewMasterViewController或您选择的任何名称。

  2. 将tableview控制器拖到故事板上,并使用segue将其连接到当前的Master视图控制器(tableview到tableview,而不是从cell到tableview)。将其单元格的标识符更改为与“属性”检查器中的“主视图”控制器的单元格不同的名称。

  3. 为segue指定一个唯一的名称,例如。 showSublevel。

  4. 指定连接到主视图控制器的tableview控制器,以使用您在Attributes Inspector中创建的子类。

  5. 返回MasterViewController.m文件。在

    • (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath方法,使用performSegueWithIdentifier:sender方法导航到您添加的tableview控制器。
  6. 在SubMasterViewController.m文件中,更改

    的实现
    • (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath方法,特别是行UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@“Cell”forIndexPath:indexPath]通过将单元格标识符设置为你的新tableview控制器的单元格。
  7. 还要将该行的UITableViewCell *单元格的名称更改为UITableViewCell * cellular之类的其他名称,否则Xcode会使其符合标准。

  8. 对于添加到主视图控制器的每个tableview控制器,重复步骤2-7。确保为每个tableview控制器的单元标识符使用唯一的名称。