setStringValue with void方法

时间:2013-05-05 09:55:10

标签: objective-c cocoa

我有一个按钮(IBAction),当我点击按钮时,标签会发生变化(setStringValue)。 效果很好。

是否可以使用(setStringValue)方法更改标签(void),因此方法不是IBAction。因为如果我调用该方法没有任何反应?代码如下所示。

//IBAction method, label is changed to setLabelMethod, works perfect.

-(IBAction)setLabel:(id)sender{
  [labelA setStringValue:@"Works!"];
  ClassName *MyClass = [[ClassName alloc]init];
  [MyClass methodSetLabel]
}

//void method, nothing happens
-(void)methodSetLabel{
  [labelB setStringValue:@"Works!"];
}

我需要做些什么来完成这项工作? 谢谢!

1 个答案:

答案 0 :(得分:2)

IBAction方法为void。没有发生任何事情的原因与你的想法不同:它不是因为方法是void,而是因为你调用方法的实例是错误的。

您的setLabel方法会创建MyClass的新实例。这不是在屏幕上显示真实labelB的类。

您需要在拥有标签的同一对象上调用该方法并运行setLabel:方法。在Objective C中,此对象由名为self的特殊变量表示。如果您按如下方式重写方法

-(IBAction)setLabel:(id)sender{
    [labelA setStringValue:@"Works!"];
    [self methodSetLabel];
}

它应该有用。