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

Can't change NSTextField's string value in other classes than the AppDelegate

我正在开发一个 Mac OS X 应用程序,它将保存和加载数据(类似于笔记应用程序)。我添加了一些 NSTextFields,我想在按下加载按钮时更改它的字符串值。我想在一个单独的 class 中执行此操作。我创建了 class 并将其命名为 Load。现在我有了 Load.hLoad.m 文件。我为按下按钮时制作了一个 IBAction:

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

Xcode (7 beta 5) 没有发现任何错误。但是当我 运行 它不会对文本字段做任何事情,但它会记录字符串。当我试图找到一种方法来编辑字符串值时,我发现如果您在 AppDelegate 中为 NSTextField 创建一个出口,它就会起作用。 在应用代表中:

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

很高兴知道可以那样做,但是我的 AppDelegate.m 文件会一团糟,因为我必须把所有我想放在 Load.m 文件中的东西。

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

两件事。

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

2:您确定此方法正在 UI(主)线程上执行吗?