我有一个UIViewController
类MyClass
,它最初没有XIB,并且是以编程方式初始化的。现在,我不想从XIB加载它,但我确实想要制作一个小的50x50 UIView(设置覆盖视图),我想添加它MyClass
,所以而不是以编程方式声明新的设置覆盖视图,我以为我会创建一个XIB文件,将文件的所有者设置为MyClass,在MyClass.h
IBOutlet UIView *settingsOverlay
中声明,并在XIB中链接它。
然后在viewDidLoad
方法中,我[self.view addSubview:settingsOverlay]
,但由于某些恼人的原因,它不起作用。它只是没有出现。我尝试以编程方式创建一个简单的UIImageView
并将其添加到subView,它工作得很好,但是当通过XIB完成时,它不起作用。任何人都可以指出可能出现的问题吗?请让我知道我可能需要包含的其他细节。
答案 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];