我为此苦苦挣扎了几个小时:我想创建一个从 NIB 文件加载的自定义 UIView。这就是我所做的:
1)我创建了一个名为“MyView”的类和一个NIB文件。
2)我把类作为文件的所有者自定义类。
3)为了加载NIB文件,我知道我需要这段代码,但我不知道把它放在哪里。我把它放在“init”方法中。
NSArray * nib = [[NSBundle mainBundle]
loadNibNamed: @"MyView"
owner: self
options: nil];
self = [nib objectAtIndex:0];
4)使用这个自定义视图:使用 IB,我在我的主 ViewController 中创建了一个 UIView。在自定义类的视图属性中,我放置了“MyView”。我为此视图创建了一个名为“myView”的 IBOutlet,并将其连接到 ViewController 类。
5)现在我不确定是否需要调用“init”或者它是否自动完成,因为它在 NIB 文件中。我尝试了他们两个。无论如何,“myView”类类型被识别为 UIView 而不是 MyView,并且正在显示一个空视图。
我究竟做错了什么?它有另一种方法吗?
谢谢,尼姆罗德
编辑:我根据这里的答案更改了我的代码。这里的所有答案实际上都没有使用自定义类,这就是这里的全部想法。这就是我所做的,但是应用程序崩溃了,因为它认为 testView 是 UIView 而不是 TestView。请帮忙。
#import "ViewController.h"
@interface ViewController ()
@property (nonatomic,retain) TestView *testView;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
NSArray* views=[[NSBundle mainBundle] loadNibNamed:@"TestView" owner:nil options:nil];
self.testView= [views objectAtIndex:0];
[self.view addSubview:self.testView];
[self.testView trace]; // calling a method from the custom class
}