我在窗口上有一个NSSlider(滑块)和一个NSLabel(标签)。我也有一个类“控制器”,每当滑块的值发生变化时都会更新标签。用控制器构造函数更新UI元素
滑块的默认位置是0.5,我想要得到的是控制器的构造函数在程序启动时更新标签的位置。
以下是我尝试这样做的实现文件。一切工作正常,除了标签始终为0时,我开始程序。
@implementation Controller
{
}
-(id)init
{
NSLog(@"initializing...");
[self updateLabel];
return self;
}
- (IBAction)sliderChanged:(id)sender
{
[self updateLabel];
}
- (void)updateLabel
{
label.text = [NSString stringWithFormat:@"%.1f", slider.value];
}
@end
在控制台中,我看到文本“initializing ...”,但标签从不更新。我错过了什么?
实现awakeFromNib有窍门。谢谢! IB控制的常见做法是什么? 初始化对象时是否总是调用[super init]?这与C#中的base()类似吗?我对obj-c很陌生! – bufferz 2009-09-11 20:19:55
'awakeFromNib'是一个从nib文件实例化的对象上自动调用的方法,因此是为您的UI设置初始值的好地方。至于'[super init]',看看这个问题:http://stackoverflow.com/questions/1341734 – 2009-09-11 20:47:40