Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.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
Iphone UIView作为子视图从xib加载:如何正确设置框架/大小?_Iphone_Objective C_Uiview - Fatal编程技术网

Iphone UIView作为子视图从xib加载:如何正确设置框架/大小?

Iphone UIView作为子视图从xib加载:如何正确设置框架/大小?,iphone,objective-c,uiview,Iphone,Objective C,Uiview,我的iphone应用程序有一个小问题(即使我以前已经做过objective-c,我对iphone编程还是很陌生) 我的主窗口中有一个名为centerView的UIView。 我已经创建了UIViewController的一个单例子类(我们称之为FooViewController),它与一个xib文件链接。我的目标是将关联视图作为(使用整个centerView框架的centerView的)子视图加载 问题:FooViewController控制的视图不使用其superview的框架 我试图补充:

我的iphone应用程序有一个小问题(即使我以前已经做过objective-c,我对iphone编程还是很陌生)

我的主窗口中有一个名为
centerView
的UIView。 我已经创建了UIViewController的一个单例子类(我们称之为
FooViewController
),它与一个xib文件链接。我的目标是将关联视图作为(使用整个centerView框架的centerView的)子视图加载

问题:FooViewController控制的视图不使用其superview的框架

我试图补充:

  • self.view.frame=self.view.superview.frame
    在initWithNib的“自定义初始化”部分。。。FooViewController方法

  • 将视图添加到centerView时(
    [centerView添加子视图:[[FooViewController sharedController]视图]设置框架:centerView.frame]
    )(
    [centerView添加子视图:[[FooViewController sharedController]视图]]
    )(我在此行之前和之后都尝试过)

但是我不能得到好的行为(即好的尺寸)。这类问题涉及多个问题,但我无法从中找到答案,因此:

  • 你知道我怎么解决这个问题吗
  • [可选]与xib链接的UIViewController实例是如何工作的?必须有一个指示xib名称的资源文件?或者它是否查找与类同名的xib

提前感谢您的帮助。

从NIB加载时,视图将加载到视图控制器的
loadView
方法中,而不是初始值设定项中。因为您不应该真正覆盖
loadView
,尤其是从NIB加载,所以应该尝试在视图控制器的
viewDidLoad
方法中执行#1(
self.view.frame=self.view.superview.frame
)。当然,您应该确保在执行此语句时将视图添加到superview中。您还需要确保此时已正确设置superview的帧


另一个可以尝试的地方是
视图将出现:
方法。到那时,您的视图的超级视图很可能已经正确设置。

非常感谢您的回答。我试着在ViewWillDisplay中输入有关帧设置的代码,但它似乎做了任何事情。实际上,问题来自另一个部分:即使在ViewWillDisplay中superview也为null(但self.view.superview.frame不会创建任何segfault…)。我将研究这一点。在obj-c中,如果接收器为nil,它将接受任何方法,并返回nil(我认为)。这就是为什么即使self.view.superview为零,也不会得到segfault。