在Xcode中的视图中加载视图控制器

fin*_*tic 6 user-interface ios

我目前正在开发iPad应用程序.该应用程序只包含两个视图,但每个视图包含许多按钮和标签.当前,设置两个视图的布局.每个都设置在视图控制器中.我还有另一个视图控制器,它包含顶部的主菜单和一个大容器(UIView),我希望它能够保存我提到的两个视图.

我的问题是,有没有办法在视图中显示视图控制器?我想在单击主菜单中的按钮时在该容器内显示一个视图控制器(UIView),当我点击另一个按钮时显示另一个.如果我的计划不可行,那么请提出一些建议,以使同样的事情发挥作用.

非常感谢!

iph*_*nic 10

是的,您可以通过添加UIViewController view以下内容轻松完成.

_viewController=[self.storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
[self.view addSubview:viewController.view];
Run Code Online (Sandbox Code Playgroud)

一旦你在里面添加viewController.view你的viewDidLoad方法ViewController就被调用.

更新:根据UIViewController类参考,在另一个ViewController中添加UIViewController作为子视图时,需要再添加两个步骤.

[self addChildViewController:viewcontroller];
[self.view addSubview:viewController.view];
[viewcontroller didMoveToParentViewController:self];
Run Code Online (Sandbox Code Playgroud)

以上完成了答案.

希望这可以帮助.干杯.


Seg*_*ero 6

自定义容器视图控制器正是您所需要的.如果使用Interface Builder和故事板 - 找到容器视图,将其拖到视图中并将包含的类设置为视图控制器.
对象库中的容器视图

如果您不使用故事板或IB(我鼓励您这样做) - 请按照上面的链接并实现向视图控制器添加子视图控制器.永远不要在没有预先addChildViewController:呼叫的情况下添加子视图,这可能会导致意外结果.通常,添加子视图控制器应按此顺序:

  1. 呼叫 [self addChildViewController:childvc]
  2. 将子视图的VC视图添加为子视图 [self.view addSubview:childvc.view]
  3. 呼叫 [childvc didMoveToParentViewController:self]

在这种情况下,一切都会正常工作.