2011-04-20 49 views
0

我有一個滑塊,並希望在圖像視圖中顯示它的值,該圖像視圖位於滑塊的上方,並與滑塊的拇指接觸。 我已經添加了ImageView和標籤以顯示UIView中的值並使其隨着滑塊拇指的移動而移動。但由於某種原因,它不顯示滑塊的值,儘管我檢查了我們正在接收該值。滑塊值沒有顯示在我的imageView?

-(void)addSliderX:frame andminimumValue:(int)min andmaximumValue:(int)max andSliderValue:(int)value{ 
    CGRect frame1 = CGRectFromString(frame); 
    statSlider = [[UISlider alloc]initWithFrame:frame1]; 
    [statSlider setMinimumTrackImage:[[UIImage imageNamed:@"greenSlider.png"] stretchableImageWithLeftCapWidth:10.0 topCapHeight:10.0] forState:UIControlStateNormal]; 
    [statSlider setThumbImage:[UIImage imageNamed:@"sliderBar_greenThumb.png"] forState:UIControlStateNormal]; 
    [statSlider setMinimumValue:min]; 
    [statSlider setMaximumValue:max]; 
    statSlider.continuous = YES; 
    positionX = value; 
    [statSlider addTarget:self action:@selector(valueChanged:) forControlEvents:UIControlEventValueChanged]; 
    [statSlider addTarget:self action:@selector(sliderChanged:) forControlEvents:UIControlEventTouchUpInside]; 
    UIView * bubble = [[UIView alloc]init]; 
    UIImageView * back = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"sliderBar_handle_number.png"]]; 
    UILabel * val = [[UILabel alloc]init]; 
    bubble.tag = 1; 
    back.tag = 2; 
    val.tag = 3; 
    bubble.alpha = 0; 
    back.alpha = 0; 
    val.alpha = 0; 

    [self.view addSubview:statSlider]; 
    [self.view addSubview:bubble]; 
    [bubble addSubview:back]; 
    [bubble addSubview:val]; 

} 

-(void)valueChanged:(id)sender{ 

    UISlider *localSlider = (UISlider *)sender; 
    greenSliderValue = [[NSString alloc] initWithString:[NSString stringWithFormat:@"%3.0f", [localSlider value]]]; 
    dsp =[greenSliderValue floatValue]; 
    UIView * bubble = (UIView*)[self.view viewWithTag:1]; 
    UIImageView * back = (UIImageView*)[bubble viewWithTag:2]; 
    UILabel * val = (UILabel*)[bubble viewWithTag:3]; 
    val.text = [[NSString alloc] initWithString:[NSString stringWithFormat:@"%3.0f", [localSlider value]]]; 

    [val setText:[NSString stringWithFormat:@"%3.0f", [localSlider value]]]; 
    UIFont * font = YEAR_LABEL_FONT; 
    val.font = font; 
    val.textColor = DESC_Color_White; 
    bubble.alpha = 1; 
    back.alpha = 1; 
    val.alpha = 1; 


    CGFloat sliderMax = localSlider.maximumValue; 
    CGFloat sliderMin = localSlider.minimumValue; 

    CGFloat sliderMaxMinDiff = sliderMax - sliderMin; 
    CGFloat sliderValue = dsp; 
    CGFloat xCoord = 65.0-42.0; 
    CGFloat yCoord = (CGFloat)positionX; 
    CGFloat halfMax = (sliderMax+sliderMin)/2.0; 

    if (sliderValue > halfMax) 
    { 
     xCoord = xCoord-(sliderValue-halfMax); 
    } 
    else 
    { 
     xCoord = xCoord + (halfMax-sliderValue); 
    } 

    xCoord= xCoord + (600/sliderMaxMinDiff)*(sliderValue-sliderMin); 
    back.frame = CGRectMake(xCoord,yCoord,84,47); 

} 

回答

0

你正在設置文本兩次,但我猜這只是你調試問題的一部分嗎?

這兩條線是多餘的:

val.text = [[NSString alloc] initWithString:[NSString stringWithFormat:@"%3.0f", [localSlider value]]]; 
[val setText:[NSString stringWithFormat:@"%3.0f", [localSlider value]]]; 

嘗試把日誌有用於測試的緣故,更換這兩個以上:

NSString *valString = [NSString stringWithFormat:@"%3.0f", [localSlider value]]; 
[val setText:valString]; 
NSLog(@"val: %@, valString: %@", val, valString); 

我的猜測是,VAL將顯示爲無那裏。

+0

不,它顯示的初始值是17。 – Ashutosh 2011-04-20 17:37:12