我试图从AppDelegate
更改标签。我可以使用IBAction
更改标签,该标签在具有标签的类的实现中运行changeLabel
,但如果我尝试从changeLabel
运行AppDelegate
它更改值(我有一个NSLog),但不更新标签。
以下是代码:
#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
答案 0 :(得分:2)
为此你必须使用NSNotificationCenter
。
Appdelegate
中的使用以下代码。
[[NSNotificationCenter defaultCenter] postNotificationName:@"ChangeThelabel" object:nil];
在具有标签的类的实现的init
方法中使用以下代码。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(ChangelabelText:) name:@"ChangeThelabel" object:nil];
在同一个班级中使用以下功能。
- (void)ChangelabelText:(NSNotification *)notification
{
// Change the text here.
}