如何正确加载使用Xib的NSView的子类的对象?以编程方式从nib的NSView的子类加载对象
我想它从一开始就被加载动态不那么我做了一个MyView.Xib 从MyDocument.m我所做的:
MyView *myView = [[MyView alloc] initWithFrame:...];
[NSBundle loadNibNamed:@"MyView" owner:myView];
[someview addSubview:myView];
...
和背景是好的(它调用的drawRect:和它的绘制如预期) 但我放在xib上的所有按钮都不会出现。 我检查过了,他们被加载,但他们的超级视图与myView
不是同一个对象。
这是为什么?我想我在Xib中错过了一些东西,但我不知道究竟是什么。 换句话说:我如何确保xib中的根视图与文件所有者是同一个对象?
我希望有类似这样的东西MAC:
NSArray* nibViews = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil]; //in iOS this will load the xib
MyView* myView = [ nibViews objectAtIndex:1];
[someview addSubview:myView];
...
在此先感谢。
编辑
我想我已经意识到了问题的根源......(??)
在MyView的类我有在IB,这就是为什么他们加载正确连接各种IBOutlet中很好(我可以参考他们)。但是顶视图没有IBOutlet。所以当NSBundle加载笔尖时,顶视图会被分配给其他一些对象。我认为这会发生,如果我把我在IB的顶视图从类:MyView
,并把myView
作为所有者[NSBundle loadNibNamed:@"MyView" owner:myView];
,但似乎并非如此。 我在做什么错?
尝试将它们移动到前面也许它将它画在背面并且不能被看到因为背景 – Radu 2011-05-02 08:53:44
我刚刚尝试过......这是没有发生;( – nacho4d 2011-05-02 09:00:43
在你的nib文件中,是否有顶级视图,其类是“MyView”?nib文件中是否还有其他顶级对象?文件所有者的类是什么? – 2011-05-02 09:18:52