我是 Objective C 编码的新手,MVC 概念给我带来了一些痛苦。我的目标是开发一个 Mac 应用程序。我能够为主窗口创建一个 .xib。它开始很好。我的主 NSWindow 有它的主 NSView。在这个 NSView 中,我放了 3 个子视图(使用 Interface Builder)。当我单击放置在第一个子视图中的按钮时,我想要更改第二个子视图的内容(通过从另一个名为 SubWindow1.xib 的 XIB 文件加载内容)。
我能够捕捉到点击并尝试了一些“xib 加载”代码,但它不起作用(内容从未出现在我的第二个子视图中)。
我所做的是:
- 把 NSButton (在第一个子视图上)
- 在 Interface Builder 上放置一个 NSObject(类重命名为 CtMainWindow,Controler 为“Ct”)
- 链接 IBAction (changeToSubWindow1) 和 IBOutlet (vSubView2 这是我的第二个子视图)
- 创建 CtMainWindow 类,创建 VwSubWindow1 类(扩展 NSView)
在 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];
瞧。我希望在视图中加载子 xib,并将该视图放在我的第二个子视图中,它会出现。
我还尝试仅将以下代码放入 changeToSubWindow1()
VwSubWindow1 * vProfile = [[VwSubWindow1 alloc] initWithFrame:vSubView2.bounds];
[vProfile loadSubWindow];
loadSubWindow() 函数执行以下操作:
[NSBundle loadNibNamed:@"SubWindow1" owner:self];
没有更多的成功。
我已经从 stackoverflow 中阅读了很多线程并尝试了很多解决方案,但没有一个对我有用。
谁能给我我需要的提示,以便在子视图中加载和显示 Xib?
提前致谢。