更改 NSTextField 的值不会更新标签? [英] Changing the Value of NSTextField doesn't update label?

查看:68
本文介绍了更改 NSTextField 的值不会更新标签?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从 AppDelegate 更改标签.我可以使用在具有标签的类的实现中运行 changeLabelIBAction 更改标签,但是如果我尝试运行 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆