2010-10-29 109 views
0

我有一個的UIImageView和滑塊的圖。滑塊最小1最大10.當移動滑塊時,UIImageView應顯示不同的圖像。滑塊是1 test1.png將顯示,滑塊是2 test2.png將顯示,滑塊是3 test3.png將顯示等...改變一個UIImageView圖像與滑塊

在Interface Builder中,我已經連接IBOutlet滑塊到水平滑塊,IBOutlet圖像到圖像查看,& IBAction爲changeImage到水平滑塊「值改爲」

我投滑塊浮動爲int。在IBAction changeImage中放置NSLog語句以確保方法正在被調用,它是。構建時沒有收到任何錯誤消息。但是,當我構建&在UIImageView中的模擬器圖像中運行並移動滑塊不會更改。這個問題必須是我碰到牆的「邏輯」,並且無法解決。

#import <UIKit/UIKit.h> 

@interface SliderViewController : UIViewController { 

    IBOutlet UISlider *slider; 
    IBOutlet UIImageView *image; 

} 

@property (nonatomic, retain) IBOutlet UISlider *slider; 

@property (nonatomic, retain) IBOutlet UIImageView *image; 

- (IBAction)changeImage; 

@end 



#import "SliderViewController.h" 

@implementation SliderViewController 


@synthesize slider; 
@synthesize image; 


- (IBAction)changeImage { 

    NSLog(@"changeImage method being called!!!!"); 

    int intSlider = (int)(slider.value); 


    if (intSlider == 0) { 


       image.image = [UIImage imageNamed:@"ash1.png"]; 
    } 

    if (intSlider == 1) { 


     image.image = [UIImage imageNamed:@"ash2.png"]; 
    } 

    if (intSlider == 2) { 


     image.image = [UIImage imageNamed:@"ash3.png"]; 
    } 

    if (intSlider == 3) { 


     image.image = [UIImage imageNamed:@"ash4.png"]; 
    } 

    if (intSlider == 4) { 


     image.image = [UIImage imageNamed:@"ash5.png"]; 
    } 

    if (intSlider == 5) { 


     image.image = [UIImage imageNamed:@"ash6.png"]; 
    } 

    if (intSlider == 6) { 


     image.image = [UIImage imageNamed:@"ash7.png"]; 
    } 

    if (intSlider == 7) { 


     image.image = [UIImage imageNamed:@"ash8.png"]; 
    } 

    if (intSlider == 8) { 


     image.image = [UIImage imageNamed:@"ash9.png"]; 
    } 

    if (intSlider == 9) { 


     image.image = [UIImage imageNamed:@"ash10.png"]; 
    } 

    if (intSlider == 10) { 


     image.image = [UIImage imageNamed:@"ash11.png"]; 
    } 

} 

回答

0

根據論壇一個方法是嘗試調用setNeedsDisplay刷新視圖:

myApp = (MyApp *)[[UIApplication sharedApplication] delegate]; 
[myApp.statView setNeedsDisplay]; 

我敢肯定,你可以只從您的視圖稱之爲對「自我」。

[self.view setNeedsDisplay]; 

根據this post呼叫必須在應用程序的主線程以及。不知道這會工作,但值得一試。

1

確保圖像名稱是完全正確的,並且您實際上已經將它們添加到項目(不只是使用Finder中複製它們)。

順便說一句,一個switch-case聲明會比一系列這裏if-then報表更好。

另一個小問題是if (intSlider == 0)的情況將永遠不會發生,因爲您將最小值設置爲1.