UIViewControllers 中的 UIViewController
Posted
技术标签:
【中文标题】UIViewControllers 中的 UIViewController【英文标题】:UIViewController within UIViewControllers 【发布时间】:2015-08-28 12:17:12 【问题描述】:我有一个 UIViewController,里面有 UITabBar。我正在尝试模仿 UITabBarController。
我的问题是在选择标签aritem时,我如何设置或UIViewController?
我很困惑如何将 UIViewController 放在试图模仿 UITabBarController 的 UIViewController 中。
请不要让我使用 UITabBarController
【问题讨论】:
所以你不知道如何将视图放入视图中?制作包含 2 个子视图的容器视图,这样可以解决问题吗? ... 您可以使用 UIContainerView 来处理多个 viewController 之间的变化 【参考方案1】:您可以使用子视图控制器将视图控制器嵌入到其他视图控制器中,只需从您的视图控制器中调用:
YourViewController *childViewController = [[YourViewController alloc] init];
UIView *containerView = //some view in your view hierarchy
childViewController.view.frame = containerView.bounds;
[self addChildViewController: childViewController];
[containerView addSubview:childViewController.view];
[childViewController didMoveToParentViewController:self];
如果你想在子视图控制器之间分页,你可以使用 UIPageViewController 作为根子视图控制器,或者从apple documentation:借用这段代码
- (void) cycleFromViewController: (UIViewController*) oldC
toViewController: (UIViewController*) newC
[oldC willMoveToParentViewController:nil]; // 1
[self addChildViewController:newC];
newC.view.frame = [self newViewStartFrame]; // 2
CGRect endFrame = [self oldViewEndFrame];
[self transitionFromViewController: oldC toViewController: newC // 3
duration: 0.25 options:0
animations:^
newC.view.frame = oldC.view.frame; // 4
oldC.view.frame = endFrame;
completion:^(BOOL finished)
[oldC removeFromParentViewController]; // 5
[newC didMoveToParentViewController:self];
];
【讨论】:
谢谢。我正在使用'[containerView addSubview:childViewController.view];'改变观点,这是一种不好的做法吗?【参考方案2】:(1)要详细学习,建议你通过:
创建自定义容器视图控制器 - https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html#//apple_ref/doc/uid/TP40007457-CH18-SW6
还有
WWDC 2011 会议视频 - Session 102 - Implementing UIViewController Containment.
(2) 快速学习,请转至:Using Multiple ViewControllers on a Single Screen in iOS
在 git 上的演示项目:multiple-viewcontrollers
【讨论】:
以上是关于UIViewControllers 中的 UIViewController的主要内容,如果未能解决你的问题,请参考以下文章
UIScrollView 中的 UIViewControllers?
UIPageViewController 中的相同 UIViewControllers
UIScrollview 中的两个 UIviewControllers - 如何在它们之间调用方法
堆叠的 UIViewControllers 中的 UITextView 委托问题