我注意到我无法更新 NSTextField 上的文本:
mainClass.h
@property(strong, nonatomic) NSTextField *titleLabel;
mainClass.m
-(void)viewDidLoad {
LabelClass *element = [[LabelClass alloc] init];
[self.view addSubview:[element label:self.titleLabel title:@"My label" xCoord:0 yCoord:0 width:100 height:50]];
}
现在如果尝试更新 NSTextField 文本,它不起作用:
mainClass.m
-(void)someMethod{
[self.titleLabel setStringValue:@"Updated text"];
}
我认为重要的是要注意“self.titleLabel”属性是在我试图更新标签“mainClass.m”的当前类中创建的。我从“LabelClass.m”调用标签的类仅包含创建标签的方法,因此我只需创建该类的一个实例,创建标签并设置“self.titleLabel”:
LabelClass.m
@implementation LabelClass
-(NSTextField *)label:(NSTextField *)label title:(NSString *)title xCoord:(CGFloat)x yCoord:(CGFloat)y width:(CGFloat)width height:(CGFloat)height{
NSTextField *textField = [[NSTextField alloc] initWithFrame:CGRectMake(x, y, width, height)];
[textField setStringValue:title];
[textField setAlignment:NSCenterTextAlignment];
[textField setEditable:NO];
[textField setDrawsBackground:NO];
[textField setSelectable:NO];
[textField setBezeled:NO];
return textField;
}
最佳答案
您的问题在这里:
-(void)viewDidLoad {
LabelClass *element = [[LabelClass alloc] init];
[self.view addSubview:[element label:self.titleLabel title:@"My label" xCoord:0 yCoord:0 width:100 height:50]];
}
您从对 LabelClass
的调用中返回一个 NSTextField
,但您从未将其分配给您的 self.titleLabel
。试试这个:
-(void)viewDidLoad {
LabelClass *element = [[LabelClass alloc] init];
self.titleLabel = [element labelWithTitle:@"My Label" xCoord:0 yCoord:0 width:100 height:50];
[self.view addSubview:self.titleLabel];
}
然后修改您的 label:title:xCoord:yCoord:width:height:
方法以删除 label 参数,因为您没有传递一个参数,而是返回一个。
-(NSTextField *)labelWithTitle:(NSString *)title xCoord:(CGFloat)x yCoord:(CGFloat)y width:(CGFloat)width height:(CGFloat)height{
NSTextField *textField = [[NSTextField alloc] initWithFrame:CGRectMake(x, y, width, height)];
[textField setStringValue:title];
[textField setAlignment:NSCenterTextAlignment];
[textField setEditable:NO];
[textField setDrawsBackground:NO];
[textField setSelectable:NO];
[textField setBezeled:NO];
return textField;
}
关于objective-c - 从另一个类更新 NSTextField 的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32214083/