在 ios 中添加视图控制器作为子视图
Posted
技术标签:
【中文标题】在 ios 中添加视图控制器作为子视图【英文标题】:adding view controller as child view in ios 【发布时间】:2014-12-01 05:47:36 【问题描述】:您好,我正在尝试将view controller
添加为child view
。然后删除此view controller
表单父视图。我为此目的使用以下代码。
self.loginView = [self.storyboard instantiateViewControllerWithIdentifier:@"LOGIN"];
[self.view addSubview:self.loginView.view];
此代码适用于ios8
,但在iOS7
中此代码不起作用,它显示一半屏幕。显示一半登录。
有什么办法可以解决这个问题?
【问题讨论】:
【参考方案1】:在您想要添加并显示您的子视图控制器的主视图(在 XIB 中)中添加一个自定义 UIView
对象。让contentView
是该视图的名称。使用以下代码添加子视图控制器:
self.loginView = [self.storyboard instantiateViewControllerWithIdentifier:@"LOGIN"];
[self addChildViewController:self.loginView];
[self.loginView.view setFrame:CGRectMake(0.0f, 0.0f, self.contentView.frame.size.width, self.contentView.frame.size.height)];
[self.contentView addSubview:self.loginView.view];
[self.loginView didMoveToParentViewController:self];
如果您不添加最后一行,您的子视图控制器将不会接收事件。通过使用此代码,您可以同时在父视图控制器和子视图控制器中接收事件。
【讨论】:
我有一个问题要问你们。如何在加载 childView 之前或之后将数据(字符串或 int)传递给子视图。谢谢你.. 我真的不明白你为什么要编辑帖子,这段代码是不可读的。您正在调用 UIViewController 视图,这会使代码非常混乱。我希望你在现实生活中不要这样编码。 我使用的名称与问题中提到的名称相同。我从不在现实生活中使用这些命名约定.. :)【参考方案2】:将UIViewController
添加为subView
不是标准编程我相信,UIViewController
旨在处理屏幕上的完整视图。与其将UIViewController
添加到您的UIView
,不如创建一个自定义UIView
,然后使用该UIView
来实现您想要的任何结果。
编辑:使用 XIB 创建自定义 UIView。
【讨论】:
我已经从故事板设计了视图,所以我为什么要添加视图控制器作为子视图 是的,但是您可以在 Xibs 中创建自定义视图,就像在 Storyboards 中一样。您只需将 UIView 类分配给 xib,然后创建该类的实例。以上是关于在 ios 中添加视图控制器作为子视图的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 中滑动 UIViewController 中包含的子视图控制器?