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?