更改NSTextField的值不会更新标签?

时间:2014-01-03 18:34:54

标签: objective-c nstextfield

我试图从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

1 个答案:

答案 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.
}