我有一个按钮(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!"];
}
我需要做些什么来完成这项工作? 谢谢!
答案 0 :(得分:2)
IBAction
方法为void
。没有发生任何事情的原因与你的想法不同:它不是因为方法是void
,而是因为你调用方法的实例是错误的。
您的setLabel
方法会创建MyClass
的新实例。这不是在屏幕上显示真实labelB
的类。
您需要在拥有标签的同一对象上调用该方法并运行setLabel:
方法。在Objective C中,此对象由名为self
的特殊变量表示。如果您按如下方式重写方法
-(IBAction)setLabel:(id)sender{
[labelA setStringValue:@"Works!"];
[self methodSetLabel];
}
它应该有用。