Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ios中将视图控制器添加为子视图_Ios_Objective C_Ios7_Ios8 - Fatal编程技术网

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

在ios中将视图控制器添加为子视图,ios,objective-c,ios7,ios8,Ios,Objective C,Ios7,Ios8,您好,我正在尝试添加一个视图控制器作为子视图。然后从父视图中删除此视图控制器 self.loginView = [self.storyboard instantiateViewControllerWithIdentifier:@"LOGIN"]; [self.view addSubview:self.loginView.view]; 此代码适用于iOS8,但在iOS7中,此代码不起作用,它显示屏幕的一半。显示一半登录 这个问题的解决方案是什么?将UIViewController添加为子视图

您好,我正在尝试添加一个
视图控制器
作为
子视图
。然后从父视图中删除此
视图控制器

 self.loginView = [self.storyboard instantiateViewControllerWithIdentifier:@"LOGIN"];
 [self.view addSubview:self.loginView.view];
此代码适用于
iOS8
,但在
iOS7
中,此代码不起作用,它显示屏幕的一半。显示一半登录


这个问题的解决方案是什么?

UIViewController
添加为
子视图
不是标准编程,我相信,
UIViewController
旨在处理屏幕上的完整视图。与其将
UIViewController
添加到
UIView
中,不如创建一个自定义
UIView
,然后使用该
UIView
来实现您想要的任何结果


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

添加
UIViewController
作为
子视图
不是标准编程,我相信,
UIViewController
旨在处理屏幕上的完整视图。与其将
UIViewController
添加到
UIView
中,不如创建一个自定义
UIView
,然后使用该
UIView
来实现您想要的任何结果


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

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

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

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

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

我已经设计了来自故事板的视图,因此我可以解释为什么我要将视图控制器添加为子视图是的,但是您可以使用与故事板相同的方式在Xibs中创建自定义视图。您只需将UIView类分配给xib,然后创建该类的实例。我已经设计了“从故事板”视图,因此我解释了为什么要将视图控制器添加为子视图。是的,但您可以在xib中创建自定义视图,与在故事板中创建视图的方式相同。您只需将UIView类分配给xib,然后创建该类的实例。我有一个问题要问你们。如何在加载子视图之前或之后将数据(字符串或int)传递给子视图。谢谢..我真的不明白你为什么编辑这篇文章,这段代码是不可读的。您正在调用UIViewController视图,这会使代码非常混乱。我希望你在现实生活中不是这样编码的。我使用的名称与前面提到的相同。我在现实生活中从未使用过这些命名约定:)我有个问题要问你们。如何在加载子视图之前或之后将数据(字符串或int)传递给子视图。谢谢..我真的不明白你为什么编辑这篇文章,这段代码是不可读的。您正在调用UIViewController视图,这会使代码非常混乱。我希望你在现实生活中不是这样编码的。我使用的名称与前面提到的相同。我在现实生活中从未使用过这些命名约定:)