2

有没有办法设计具有以下结构的应用程序。我尝试了很多教程,但没有一个能像我尝试的那样。我想知道是不是因为它无法完成。

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

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

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

我查看了 Apple 的 MultipleDetailView Controller 教程,但它仅适用于单级 MasterViewController 表。我可以在 MasterDetailController 中放置一个导航控制器,然后仍然可以推送到新的详细视图控制器吗?

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

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

希望很清楚。谢谢

4

1 回答 1

0

以下适用于我在 iOS 6 上使用带有情节提要的 Master Detail 模板。我使用的是 Xcode 4.6.2

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

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

  3. 为 segue 赋予其标识符的唯一名称,例如。显示子级别。

  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 *cell 的名称更改为 UITableViewCell *cell 之类的其他名称,否则 Xcode 将抛出一个嘶嘶声。

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

于 2013-05-03T03:26:27.760 回答