在iOS中将视图控制器添加为子视图

codeday· 2019-11-17
本文来自 codeday ,作者 codeday
嗨,我试图将视图控制器添加为子视图.然后从父视图中删除此视图控制器.为此,我正在使用以下代码.

 self.loginView = [self.storyboard instantiateViewControllerWithIdentifier:@"LOGIN"];
 [self.view addSubview:self.loginView.view];

这段代码在iOS8上运行良好,但在iOS7上却无法正常工作,它只显示一半的屏幕,一半显示登录.

对此有什么解决方案?

最佳答案
在要添加并显示子视图控制器的主视图中(在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]; 

如果您不添加最后一行,则子视图控制器将不会接收事件.通过使用此代码,您可以同时在父视图控制器和子视图控制器中接收事件.