无法在 AppDelegate 以外的 类 中更改 NSTextField 的字符串值
Can't change NSTextField's string value in other classes than the AppDelegate
我正在开发一个 Mac OS X 应用程序,它将保存和加载数据(类似于笔记应用程序)。我添加了一些 NSTextFields,我想在按下加载按钮时更改它的字符串值。我想在一个单独的 class 中执行此操作。我创建了 class 并将其命名为 Load。现在我有了 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 创建一个出口,它就会起作用。
在应用代表中:
- (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(主)线程上执行吗?
我正在开发一个 Mac OS X 应用程序,它将保存和加载数据(类似于笔记应用程序)。我添加了一些 NSTextFields,我想在按下加载按钮时更改它的字符串值。我想在一个单独的 class 中执行此操作。我创建了 class 并将其命名为 Load。现在我有了 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 创建一个出口,它就会起作用。 在应用代表中:
- (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(主)线程上执行吗?