我是Objective C编码的新手,MVC概念给了我一些痛苦。我的目标是开发一个Mac应用程序。我能够为主窗口创建一个.xib。它开始很好。 我的主要NSWindow有它的主要NSView。在这个NSView中,我放了3个子视图(使用Interface Builder)。我想要的是当我点击放在第一个子视图中的按钮时,更改第二个子视图的内容(通过从另一个XIB文件加载内容,称为SubWindow1.xib)。
我能够抓住点击并尝试了一些“xib加载”代码,但它不起作用(内容永远不会出现在我的第二个子视图中)。
我做的是:
在changeToSubWindow1()中,我写道:
VwSubWindow1 * vProfile = [[VwSubWindow1 alloc] initWithFrame:vSubView2.bounds];
[vProfile loadXib];
[vProfile.superview addSubview:vProfile];
loadXib()函数执行:
NSNib * nib = [[NSNib alloc] initWithNibNamed:[self @"SubWindow1"] bundle:nil]; //@"SubWindow1" is the name of the expected loaded xib without .xib extention
[nib instantiateWithOwner:self topLevelObjects:nil];
和Voila。我希望在视图中加载子xib,并将该视图放在我的第二个子视图中,它会出现。
我还尝试在changeToSubWindow1()
中只放入以下代码VwSubWindow1 * vProfile = [[VwSubWindow1 alloc] initWithFrame:vSubView2.bounds];
[vProfile loadSubWindow];
loadSubWindow()函数执行:
[NSBundle loadNibNamed:@"SubWindow1" owner:self];
没有更多的成功。
我已经从stackoverflow中读了很多线程并尝试了很多解决方案,但没有一个能为我工作。
任何人都可以给我提示我在子视图中加载和显示Xib所需的提示吗?
提前致谢。
答案 0 :(得分:0)
你可以尝试这种方法
你可以放3个xib文件和3个窗口。连接每个窗口
self.packages = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
[self.window1.contentView addSubview:self.vc.view];
self.packages.view.frame = ((NSView*)self.window1.contentView).bounds;
[window1 makeKeyAndOrderFront:NSApp];