我在窗口上有一個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