正确连接NSTextField的方法

时间:2013-05-15 13:15:20

标签: macos cocoa interface-builder textfield

我正在尝试创建一个简单的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变量,但它始终为null。我期待一个非null变量,所以我可以调用setStringValue:并随时修改文本。

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

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

有什么建议吗?

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

1 个答案:

答案 0 :(得分:0)

NIB文件有一个所有者 - 这是您要用来执行此操作的类。事情应该是这样的:

  1. 创建班级的实例(所有者,带插座)
  2. 在初始化期间,此类加载NIB文件
  3. 在加载NIB文件时,已配置出口参考
  4. 回叫触发(awakeFromNib)告诉所有者所有配置已完成
  5. 完成后,您就可以访问这些网点了。

    从最初的项目开始,你应该有一个NIB文件和一个属于它的所有者的类,所以你应该使用它来执行你的控制任务(当然,直到你有更多的NIB档案经验)。