2011-10-03 6 views
0

Я новичок в Objective-C, и мне нужна ваша помощь! В коде, который вы увидите ниже, мои ярлыки выбирают данные из представления выбора. Я хотел бы вместо использования «расчета» IBAction, чтобы обновить мой «chargeLabel.text» в реальном времени, как только пользователь изменит значение в представлении выбора.Objective-C: Auto Update Текст метки

-(IBAction)calculate:(id)sender { 
float floatTime; 
if ([typeLabel.text isEqualToString:@"NiMH"]) 
{ 
    floatTime=([mAhLabel.text floatValue]/chargerSlider.value)*1.5; 
} else { 
    floatTime=([mAhLabel.text floatValue]/chargerSlider.value)*1.4; 
} 
int intHourhs=(floatTime); 
float floatHours=(intHourhs); 
float floatMinutes=(floatTime-floatHours)*60; 
NSString *stringTotal = [NSString stringWithFormat: @"Hours: %.0i Minutes: %.0f", intHourhs, floatMinutes]; 
chargeLabel.text=stringTotal; 

}

ответ

2

Вы должны реализовать UIPickerViewDelegate протокол. Затем выполнить все, что вы хотите в didSelectRow методы

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 
{ 
    ... 
    //here your code 

} 

Проверить UIPickerViewDelegate Protocol Reference

EDIT: Я просто понял, что ваш доступ к value свойству chargerSlider если это UISlider вам не нужно реализовывать все делегат, просто передав ваш IBAction в селектор Value Changed слайдера в IB.

1

Устроился в качестве делегата UIPickerView, и реализовать этот метод: pickerView:didSelectRow:inComponent Когда этот метод дозвонился, просто вызовите [self calculate:nil];