1

我有一个按钮 ( 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!"];
}

我该怎么做才能完成这项工作?谢谢!

4

1 回答 1

2

IBAction方法是void。什么也没发生的原因和你想的不一样:不是因为方法是void,而是因为你调用方法的实例是错误的。

您的setLabel方法创建一个新的MyClass. 那不是真正labelB显示在屏幕上的类。

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

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

它应该工作。

于 2013-05-05T10:02:04.550 回答