您可以创建自定义container view controller 并将视图控制器交换为根据用户选择更改的部分。
--添加示例--
例如 iPad 的设置应用程序。左侧是表格视图,右侧是详细视图,可根据用户选择进行更改。所以 Tableview 可以包装在一个视图控制器中,比如说 ListViewController。这不会改变。右侧将是 DetailViewController,它将根据用户选择进行交换。您的 ContainerViewController 将始终有 2 个视图控制器。
这里是如何将视图控制器添加为子视图并在 Objective-c 中设置它们的视图。
- (void) setupContentViewControllerWith: (DetailViewController*) detailViewController andListViewController:(ListViewController*)listViewController {
[self addChildViewController:listViewController];
[self addChildViewController:detailViewController];
listViewController.view.frame = CGRectMake(kListView_X, kListView_Y, kListView_Width, kListView_Height);
detailViewController.view.frame = CGRectMake(kListView_Width, kDetailView_Y, self.view.bounds.size.width, self.view.bounds.size.height-kDetailView_Y);
[self.scrollContainer addSubview:listViewController.view];
[self.scrollContainer addSubview:detailViewController.view];
[self.scrollContainer setContentSize:CGSizeMake(kListView_Width+self.view.bounds.size.width, self.view.bounds.size.height)];
}
当用户从列表中选择新项目时,您可以如下交换 DetailViewControllers
- (void) replaceEpisodeControllerWith:(DetailViewController *)detailViewController {
detailViewController.view.frame = CGRectMake(kListView_Width, kDetailView_Y, self.view.bounds.size.width, self.view.bounds.size.height-kDetailView_Y);
[UIView transitionFromView:currentDetailViewController.view
toView:detailViewController.view
duration:0.0
options:UIViewAnimationOptionTransitionNone
completion:^(BOOL finished)
{
[currentDetailViewController.view removeFromSuperview];
[currentDetailViewController removeFromParentViewController];
[currentDetailViewController release];
currentDetailViewController = detailViewController;
}];
}
我没有这个的 swift 版本。