如何在SplitViewController中加载多个DetailViewController?

时间:2014-06-04 13:35:30

标签: ios objective-c xcode ipad ios7

在拆分视图控制器应用程序中,如何在主视图控制器中选择表格行时推送多个详细视图控制器?

为了清楚起见,我有一个带有两个不同类的splitviewcontroller: 1)MasterViewController - 左侧视图。 2)DetailViewController - 右侧视图

当我在主视图控制器中选择一行时,我需要使用PushViewController(作为堆栈)在DetailViewController上添加多个ViewController。如何连接视图控制器?从拆分视图控制器?或者从详细视图导航控制器?

1 个答案:

答案 0 :(得分:0)

假设您要将第二个视图控制器替换为另一个视图控制器,您应该能够通过主视图控制器的UISplitViewController属性访问parentViewController并设置新的viewControllers数组。 (参见https://developer.apple.com/library/ios/documentation/uikit/reference/UISplitViewController_class/Reference/Reference.html

中的文档
- (void)tableView:(UITableView *)tv didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // ...

    self.parentViewController.viewControllers = @[self, newViewController];
}

假设您在包含该表的主视图控制器中并且它具有对当前呈现的视图控制器的引用,该控制器是UINavigationController,您可以在堆栈上推送所需的新视图控制器,无论多久:

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

  // ...

  [self.detailViewController pushViewController:vc1 animated:YES];
  [self.detailViewController pushViewController:vc2 animated:YES];
  [self.detailViewController pushViewController:vc3 animated:YES];
}

这会将三个视图控制器添加到detailViewController的视图堆栈中。根据您的情况调整变量名称。