添加UIView subView无法正常工作

时间:2012-01-17 16:21:06

标签: iphone objective-c ios

我有一个UIViewControllerMyClass,它最初没有XIB,并且是以编程方式初始化的。现在,我不想从XIB加载它,但我确实想要制作一个小的50x50 UIView(设置覆盖视图),我想添加它MyClass,所以而不是以编程方式声明新的设置覆盖视图,我以为我会创建一个XIB文件,将文件的所有者设置为MyClass,在MyClass.h IBOutlet UIView *settingsOverlay中声明,并在XIB中链接它。

然后在viewDidLoad方法中,我[self.view addSubview:settingsOverlay],但由于某些恼人的原因,它不起作用。它只是没有出现。我尝试以编程方式创建一个简单的UIImageView并将其添加到subView,它工作得很好,但是当通过XIB完成时,它不起作用。任何人都可以指出可能出现的问题吗?请让我知道我可能需要包含的其他细节。

3 个答案:

答案 0 :(得分:2)

如果您尝试使用xib添加视图,则需要使用loadNibNamed方法。

[[NSBundle mainBundle] loadNibNamed:@"settingsOverlay" owner:self options:nil];

您可以参阅开发人员链接以获取更多信息 - http://developer.apple.com/library/IOs/#documentation/UIKit/Reference/NSBundle_UIKitAdditions/Introduction/Introduction.html

答案 1 :(得分:1)

为设置覆盖视图创建XIB并将其所有者设置为MyClass不会隐式导致由于手动实例化MyClass而加载XIB。您必须在MyClass viewDidLoad中手动加载设置覆盖视图XIB并将其添加为子视图。加载它并将所有者作为self传递将导致它绑定到您创建的IBOutlet,但您仍然必须将其添加为子视图。

viewDidLoad中的代码如下所示:

[[NSBundle mainBundle] loadNibNamed:@"OverlayView" owner:self];
[self.view addSubview:self.overlayView];

答案 2 :(得分:1)

您需要在设置settingsOverlay之前加载MyClass xib。尝试在addSubview调用之前添加此行。

[[NSBundle mainBundle] loadNibNamed:@"MyClass" owner:self options:nil];