UISlider управляет UIImageView - PullRequest
       17

UISlider управляет UIImageView

0 голосов
/ 16 февраля 2012

Я пытаюсь заставить UISlider управлять изображением, показанным в UIImageView. Минимальный слайдер - 0, максимальный - 50.

Проблема в том, что UIImageView реагирует только на else и chosenTime = 50. Только тогда соответствующая картинка отображается в UIImageView. 48 и 49 игнорируются, в этих случаях показана «другая» картина. Любая помощь очень ценится!

Вот код:

-(IBAction) sliderChanged:(id)sender{
    UISlider *slider = (UISlider *) sender;
    int prog = (int)(slider.value + 0.5f);
    NSString * newText = [[NSString alloc] initWithFormat:@"%d", prog];
    sliderLabel.text = newText;
    int chosenTime = [newText intValue];

    NSLog(@"chosenTime is %i", chosenTime);
    //chosenTime is confirmed int value in the NSLOG!!!

    if (chosenTime == 1) {
        NSString *fullpath = [[[NSBundle mainBundle] bundlePath] stringByAppendingString:@"/Pic0001.png"];
        clockView.image = [UIImage imageWithContentsOfFile:fullpath];
    }
    if (chosenTime == 48) {
        NSString *fullpath = [[[NSBundle mainBundle] bundlePath] stringByAppendingString:@"/Pic0048.png"];
        clockView.image = [UIImage imageWithContentsOfFile:fullpath];
    } 
    if (chosenTime == 49) {
        NSString *fullpath = [[[NSBundle mainBundle] bundlePath] stringByAppendingString:@"/Pic0049.png"];
        clockView.image = [UIImage imageWithContentsOfFile:fullpath];
    } 
    if (chosenTime == 50) {
        NSString *fullpath = [[[NSBundle mainBundle] bundlePath] stringByAppendingString:@"/Pic0050.png"];
        clockView.image = [UIImage imageWithContentsOfFile:fullpath];
    } else {
        NSString *fullpath = [[[NSBundle mainBundle] bundlePath] stringByAppendingString:@"/Pic0000.png"];
        clockView.image = [UIImage imageWithContentsOfFile:fullpath];
    }
}

1 Ответ

0 голосов
/ 16 февраля 2012

Я немного упростил код. Убедитесь, что номера NSLogged находятся в диапазоне 1-50. В противном случае минимальные / максимальные значения ползунка неверно настроены.

-(IBAction) sliderChanged: (UISlider *) sender
{
    int chosenTime = (int) ceilf(slider.value);
    NSLog(@"chosenTime is %i", chosenTime);
    //chosenTime is confirmed int value in the NSLOG!!!

    if (chosenTime > 50)
        chosenTime = 0;

    NSString *fileName = [NSString stringWithFormat: @"Pic00%02d.png", chosenTime];
    NSString *fullpath = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent: fileName];
    clockView.image = [UIImage imageWithContentsOfFile: fullpath];
}

Проблема с вашим кодом - отсутствие else после каждого if. Сравнения проваливаются до последнего if, после которого либо 50, либо не 50, а не 50 считается нулем.

...