无法在AppDelegate以外的其他类中更改NSTextField的字符串值

时间:2015-09-02 19:06:33

标签: xcode macos class cocoa nstextfield

我正在使用Mac OS X应用程序来保存和加载数据(有点笔记应用程序)。我添加了一些NSTextFields,我想在按下加载按钮时更改其字符串值。我想在一个单独的课堂上这样做。我创建了这个类并将其命名为加载。现在我有 Load.h Load.m 文件。我按下按钮时做了一个IBAction:

- (IBAction)loadText:(id)sender
{
    [textField setStringValue:[[NSUserDefaults standardUserDefaults] objectForKey:@"MyNote"]];
    NSLog(@"This method works!");
}

Xcode(7 beta 5)没有看到任何错误。但是当我运行它时它不会对文本字段做任何事情,但它会记录字符串。当我试图找到一种方法来编辑字符串值时,我发现如果你在AppDelegate中为NSTextField创建了一个插座,它就可以正常工作。 在app Delegate中:

- (IBAction)loadTextInAppDelegate:(id)sender
{
    [appDelegateTextField setStringValue:[[NSUserDefaults standardUserDefaults] objectForKey:@"MyNote"]];
    NSLog(@"This method works!");
}

很高兴知道有可能这样做,但是我的 AppDelegate.m 文件会很乱,因为我不得不放在我想要放在 Load.m 文件中的所有内容中。

那么有没有办法在与 AppDelegate 不同的类中更改NSTextField的字符串值?

1 个答案:

答案 0 :(得分:1)

两件事。

1:你确定你的loadText方法中的textField不是吗?

2:你确定这个方法正在UI(主)线程上执行吗?