Cocoa - Display xib on another xib

亡梦爱人 提交于 2019-12-21 05:28:13

问题


Can anyone tell me how (or direct me to info on) displaying a .xib (nib) on another .xib (nib).

How ever I wish to place it so I can programically move it around the main nib sort of like this (which obviously doesn't work)

- (void)drawRect:(NSRect)dirtyRect
{

    NSRect customView = NSMakeRect(pos1, pos1, 200, 100);

    [[NSBundle mainBundle] loadNibNamed:@"secondXib" owner:self];

    NSRectFill (customView);
}

And I wish to do this for Mac OS X (Not iPhone). (By the way using xCode 4 incase it makes a difference)


回答1:


You can easily load a view from another nib using NSViewController. In your nib you should just set File's Owner's custom class to NSViewController and hook up the view outlet of File's Owner to point to the view you want to load. You can then just do this:

//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)];

You don't need to do anything in drawRect:. The subview will draw itself, and drawRect: will be called automatically if you move the subview.

You should read the View Programming Guide for Cocoa. It is critical to understanding how views work, and it is clear from your question that you do not yet have that understanding.

You should also read the Cocoa Drawing Guide.




回答2:


Thanks a lot, Another alternative ( which is basically the non programming way of doing it ), is to add a NSViewController object in your first xib, and set it to you use the nib name that you specify. In your second xib, don't forget to set the class name in the "custom class" field on the view ( and NSViewController on file's owner ) else that won't work.



来源:https://stackoverflow.com/questions/9757098/cocoa-display-xib-on-another-xib

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!