在ios中添加视图控制器作为子视图

时间:2014-12-01 05:47:36

标签: ios objective-c ios7 ios8

您好我正在尝试将view controller添加为child view。然后删除此view controller表单父视图。我正在使用以下代码。

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

此代码适用于iOS8,但在iOS7中,此代码无效,显示屏幕的一半。显示半部分登录。

这可能是什么解决方案?

2 个答案:

答案 0 :(得分:8)

在主视图(在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]; 

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

答案 1 :(得分:0)

UIViewController添加为subView并非我认为的标准编程,UIViewController旨在处理屏幕上的完整视图。您应该创建自定义UIViewController,然后使用UIView来获得您想要的任何结果,而不是向UIView添加UIView

编辑:使用XIB创建自定义UIView。