让我们说我有一个 UITableViewController ,它大部分是可重用的,应该在许多 UIViewController 中使用,但是它应该只覆盖整个视图的一部分(例如总高度的90%)。通常,我会在导航中执行此操作,但是如果我想保持UIViewController的前10%可见,并显示剩余90%的 UITableViewController ,则可能,如果可以的话,该怎么做?
答案 0 :(得分:0)
是的,可以。只需将UITableViewController作为子控制器添加到您的父UIViewController。
此外,您可以在这里Apple Documentation
进行阅读。答案 1 :(得分:0)
是的。大视图控制器是容器视图控制器,而小视图控制器(在这种情况下为表视图控制器)是子视图控制器。我们可以在容器视图控制器中添加或删除子视图控制器。
将子视图控制器添加到容器
- (void)displayContentController:(UIViewController *)content {
[self addChildViewController:content];
content.view.frame = [self frameForContentController];
[self.view addSubview:self.currentClientView];
[content didMoveToParentViewController:self];
}
从容器中删除子视图控制器
- (void)hideContentController:(UIViewController *)content {
[content willMoveToParentViewController:nil];
[content.view removeFromSuperview];
[content removeFromParentViewController];
}
我们还可以删除旧的子视图控制器,并同时添加新的子视图控制器。这是示例代码(带有动画)。
- (void)cycleFromViewController:(UIViewController *)oldVC
toViewController:(UIViewController *)newVC {
// Prepare the two view controllers for the change.
[oldVC willMoveToParentViewController:nil];
[self addChildViewController:newVC];
// Get the start frame of the new view controller and the end frame
// for the old view controller. Both rectangles are offscreen.
newVC.view.frame = [self newViewStartFrame];
CGRect endFrame = [self oldViewEndFrame];
// Queue up the transition animation.
[self transitionFromViewController:oldVC toViewController:newVC
duration:0.25 options:0
animations:^{
// Animate the views to their final positions.
newVC.view.frame = oldVC.view.frame;
oldVC.view.frame = endFrame;
}
completion:^(BOOL finished) {
// Remove the old view controller and send the final
// notification to the new view controller.
[oldVC removeFromParentViewController];
[newVC didMoveToParentViewController:self];
}];
}