iOS内嵌视图控制器视图内的UIViewController的视图?

在UIViewController的视图中有一个嵌套的视图控制器的视图,通常是不好的编程习惯吗? 举例来说,我想要有一些可以响应用户触摸的互动元素,但只占用屏幕的25%。

我想我会添加这个嵌套的视图控制器到我的UIViewController说:

[self.view addSubview: nestedViewController.view];

不,这通常是很好的设计,它有助于保持视图控制器的简洁。 但是,您应该使用视图控制器遏制模式,请查看以下文档。

实现容器视图控制器

这对使用界面生成器与故事板进行设置来说非常简单,请查看对象库中的容器视图。

这是故事板中一个人为的例子。 在这个例子中,你将有4个视图控制器,一个容纳3个容器,每个容器一个。 当您展示具有所有容器的最左侧控制器时,Storyboard将自动初始化并嵌入其他3.您可以通过childViewControllers属性访问这些子视图控制器,或者您可以覆盖prepareForSegue:sender:方法prepareForSegue:sender:并捕获即将被调用的segue的目标视图控制器。 如果需要的话,也可以将属性传递给子视图控制器。

在这里输入图像描述


我把这段代码放在父视图控制器中。 这对我很有效。

Obj C

-(void)viewDidLoad{
     [super viewDidLoad];
     InnerViewController *innerViewController = [self.storyboard instantiateViewControllerWithIdentifier:INNER_VIEW_CONTROLLER];
     [self addChildViewController:innerViewController];
     [self.view addSubview:innerViewController.view];
     [innerViewController didMoveToParentViewController:self];
}

Swift

 let childViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ChildViewController"),
 self.addChildViewController(childViewController)
 self.view.addSubview(childViewController.view)
 childViewController.didMove(toParentViewController: self)

另一种选择是使用IB并放置容器视图。 UIViewController会自动显示(在这种情况下是XCode 9): 在这里输入图像描述


这是我基于Swift开发者的Swift 3解决方案在FB的答案

 let childViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ChildPageViewController"),
 self.addChildViewController(childViewController)
 self.view.addSubview(childViewController.view)
 childViewController.didMove(toParentViewController: self)
链接地址: http://www.djcxy.com/p/87699.html

上一篇: iOS Nested View Controllers view inside UIViewController's view?

下一篇: Custom views with Storyboard