0

我正在尝试创建一个简单的 Mac OS X 应用程序,它显示文本输出,用于记录我的程序。这是我所做的:

1) 创建了一个 Mac OS X UI 项目

2) 在 MainMenu.xib 的 Application 窗口中间添加了一个“Text Field”组件

3) 添加了具有以下属性的新类“MainWindow.m”:

@property (assign) IBOutlet NSTextField *mainWindowText;

4)将文本字段组件的“引用插座”连接到属性。我现在在上面的代码行左侧看到一个灰点

5) 在我的应用程序中,我创建了一个新线程,该线程创建了 MainWindow 的一个实例。然后我等待 5 秒并尝试访问上面的 mainWindowText 变量,但它始终为空。我期待一个非空变量,所以我可以调用 setStringValue: 并随时修改文本。

我尝试用 doText: 做类似的事情,当我按下回车键时,我可以看到回调,并在那里写文字。但是我需要一种在任意时间修改文本的方法,我认为上述属性是正确的方法。

我也尝试添加 @synthesize 语句,但没有效果。

有什么建议么?

更新:阅读一些帖子后,我认为问题在于我正在使用错误的 mainWindow 对象。我尝试在 NIB 中创建一个 NSObject 并使其自定义类类型为 mainWindow,并在我的其他类之一中创建了一个 IBOutlet(类型 MainWindow *),但它不允许我将这两个东西连接起来,所以我不确定如何访问我添加到 NIB 的这个 NSObject 对象。

4

1 回答 1

0

NIB 文件有一个所有者——即您要用来执行此操作的类。事情应该工作的方式是:

  1. 创建您的类的实例(所有者,带有插座)
  2. 在初始化这个类加载NIB文件
  3. 加载 NIB 文件时,将配置出口参考
  4. 回调触发 ( awakeFromNib) 告诉所有者所有配置已完成

完成后,您就可以访问网点了。

从最初的项目中,您应该有一个 NIB 文件和一个作为其所有者的类,因此您应该使用它来执行您的控制任务(当然,直到您对 NIB 档案有更多经验)。

于 2013-05-15T18:30:53.047 回答