更改 NSTextField 的值不会更新标签? [英] Changing the Value of NSTextField doesn't update label?
问题描述
我正在尝试从 AppDelegate
更改标签.我可以使用在具有标签的类的实现中运行 changeLabel
的 IBAction
更改标签,但是如果我尝试运行 changeLabel
> 从 AppDelegate
它改变值(我有一个 NSLog),但不更新标签.
I'm trying to change a label from the AppDelegate
. I can change the label with an IBAction
that runs a changeLabel
in the implementation of the class that has the label, but if I try to run changeLabel
from the AppDelegate
it changes the value (I have an NSLog), but doesn't update label.
代码如下:
#import <Foundation/Foundation.h>
@interface testLabelThingy : NSObject
@property (strong) IBOutlet NSTextField *daLabel;
- (id) init;
- (void)changeLabel;
- (IBAction)daButton:(id)sender;
@end
和:
#import "testLabelThingy.h"
@implementation testLabelThingy
@synthesize daLabel;
- (id) init{
self.daLabel = [[NSTextField alloc] init];
return self;
}
- (IBAction)daButton:(id)sender{
[self changeLabel];
}
- (void)changeLabel{
NSLog(@"Change Label Function. Current value is: %@", [self.daLabel stringValue]);
if([[self.daLabel stringValue] isEqualToString:@"Bloog"]){
[self.daLabel setStringValue:@"Blarg"];
}else{
[self.daLabel setStringValue:@"Bloog"];
}
}
@end
推荐答案
为此,您必须使用 NSNotificationCenter
.
在 Appdelegate
中使用以下代码.
in Appdelegate
use following code.
[[NSNotificationCenter defaultCenter] postNotificationName:@"ChangeThelabel" object:nil];
在具有标签的类的实现的init
方法中使用以下代码.
use the below code in the init
method of the implementation of the class that has the label.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(ChangelabelText:) name:@"ChangeThelabel" object:nil];
并在同一个类中使用以下函数.
And in the same class use the following function.
- (void)ChangelabelText:(NSNotification *)notification
{
// Change the text here.
}
这篇关于更改 NSTextField 的值不会更新标签?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!