任何人都可以告诉我如何(或指示我的信息)在另一个.xib(笔尖)上显示.xib(笔尖)。
我多么希望放置它以便我可以在主要的笔尖上进行程序化移动,这样(显然不起作用)
- (void)drawRect:(NSRect)dirtyRect
{
NSRect customView = NSMakeRect(pos1, pos1, 200, 100);
[[NSBundle mainBundle] loadNibNamed:@"secondXib" owner:self];
NSRectFill (customView);
}
我希望在Mac OS X(非iPhone)上这样做。 (顺便说一句,使用xCode 4会产生影响)
答案 0 :(得分:9)
您可以使用NSViewController
轻松加载来自其他笔尖的视图。在您的笔尖中,您只需将文件所有者的自定义类设置为NSViewController
,然后连接文件所有者的view
出口即可指向查看您要加载。然后你可以这样做:
//create an NSViewController and use it to load the nib
NSViewController* vc = [[NSViewController alloc] initWithNibName:@"YourNibName" bundle:nil];
//get the view from the view controller
NSView* loadedView = [vc view];
//release the view controller so we don't leak
[vc release];
//add the view as a subview of your main view
[mainView addSubview:loadedView];
//position the view
[loadedView setFrameOrigin:NSMakePoint(100.0, 100.0)];
您无需在drawRect:
中执行任何操作。子视图将自行绘制,如果移动子视图,将自动调用drawRect:
。
您应该阅读View Programming Guide for Cocoa。理解视图的工作方式至关重要,从您的问题中可以清楚地看出,您还没有这种理解。
您还应该阅读Cocoa Drawing Guide。
答案 1 :(得分:1)
非常感谢, 另一种替代方法(基本上是非编程方式)是在第一个xib中添加NSViewController对象,并将其设置为使用您指定的nib名称。 在你的第二个xib中,不要忘记在视图的“自定义类”字段中设置类名(以及文件所有者的NSViewController),否则将无效。