【发布时间】:2012-11-11 23:16:58
【问题描述】:
我是 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 所需的提示?
提前致谢。
【问题讨论】:
-
作为记录,我在消息的开头放了一个“你好”,但它没有显示,如果我编辑我的消息则事件