我有一个带有一个UIImageView和一个滑块的视图。最小滑块1最大10。移动滑块时,UIImageView应该显示不同的图像。滑块将显示1 test1.png,滑块将显示2 test2.png,滑块将显示3 test3.png等...
在Interface Builder中,我已将IBOutlet滑块连接到“水平”滑块,将IBOutlet图像连接到了“图像视图”,并将IBAction changeImage连接到了水平滑块,“值已更改”
我已将滑块浮点数转换为整数。在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"];
}
}
确保图像名称正确无误,并且您实际上已经将它们添加到项目中(不仅仅是使用Finder复制它们)。
顺便说一句,switch-case
语句比这里的一系列if-then
语句要好。
另一个小事是,由于将最小值设置为1,因此if (intSlider == 0)
情况将永远不会发生。
根据论坛,一种方法是尝试调用setNeedsDisplay刷新视图:
myApp = (MyApp *)[[UIApplication sharedApplication] delegate];
[myApp.statView setNeedsDisplay];
我确定您可以从自己的观点将其称为“自我”。
[self.view setNeedsDisplay];
根据this post,调用也必须位于应用程序的主线程中。不确定是否可以,但是值得一试。
使用物镜c中的值滑块更改图像
。h
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIImageView *imageview;
@property (weak, nonatomic) IBOutlet UISlider *sldrimg;
- (IBAction)slider:(id)sender;
。m
- (IBAction)slider:(id)sender {
int a = (int) self.sldrimg.value;
if(a<=20)
{
_imageview.image = [UIImage imageNamed:@"nature.png"];
}
if(a>20 && a<=40)
{
_imageview.image = [UIImage imageNamed:@"bike.png"];
}
if(a>40 && a<=60)
{
_imageview.image = [UIImage imageNamed:@"minion.png"];
}
if(a>60 && a<=80)
{
_imageview.image = [UIImage imageNamed:@"woods.png"];
}
if(a>80 && a<=100)
{
_imageview.image = [UIImage imageNamed:@"trees.png"];
}