gpt4 book ai didi

cocoa - 如何从代码加载 nib 文件?

转载 作者:行者123 更新时间:2023-12-03 16:13:37 25 4
gpt4 key购买 nike

我在界面生成器中创建了一个自定义 View ,其中有一些按钮。我在代码中为它创建了一个类作为“文件所有者”,以将按钮连接到操作方法。

那么我该如何使用这个类呢?

我不能这样做......

StartScreen *ss = [[StartScreen alloc] initWithFrame: ...];
[self.window.contentView addSubView: ss];
...

因为这只会产生一个空 View 。 (当然:StartScreen 类还不知道 nib 文件的任何信息。)

我想做的是:

StartScreen *ss = LoadCustomViewFromNib(@"StartScreen");
[self.window.contentView addSubView: ss];

或者也许我必须说一些类似的话

[self iWannaBeANibWithName: @"StartScreen"];

在 StartScreen 的构造函数中?

请帮忙...(顺便说一句,我正在为 Mac OS X 10.6 进行开发)

最佳答案

一种选择是使 StartScreen 成为 NSViewController 的子类,也许将其名称更改为 StartScreenController。如果您的 nib 文件中有 IBActions 和/或您想将 View 控制代码放在它自己的类中,这可能是一个更加模块化的解决方案。

  1. StartScreenController 声明为 NSViewController 的子类
  2. 如果需要,在 StartScreenController 中声明 IBOutlets
  3. 将 nib 文件的所有者类设置为 StartScreenController
  4. 将文件的所有者 view 导出连接到 View 对象,并根据需要连接其他导出

然后:

StartScreenController *ss = [[StartScreenController alloc] initWithNibName:@"nibname" bundle:nil];    
[self.window.contentView addSubView:ss.view];

如果您不使用垃圾收集,请不要忘记在不再需要时释放 ss

关于cocoa - 如何从代码加载 nib 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6010137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com