一直在研究应用程序,并且一直在研究这里提供的问题,但没有找到类似的东西来解决我的问题。
我有一个包含4个图像的阵列设置,每次按顺序触摸图像时我都会尝试更改为不同的图像,然后在显示最后一个图像后返回到第一个图像。
例如:image1“touch”=> image2“touch”=> image3“touch”image4“touch”=> image1的.....
除非“触摸”,否则图像不会改变。
我的数组设置为:
-(void) viewDidLoad {
imageArray = [[NSArray alloc] initWithObjects:
[UIImage imageNamed:@"image1.png"],
[UIImage imageNamed:@"image2.png"],
[UIImage imageNamed:@"image3.png"],
[UIImage imageNamed:@"image4.png"],
nil];
然后我用以下内容显示第一张图片:
imageView.image = [imageArray objectAtIndex:0];
然后,我可以使用以下代码在两个图像之间成功切换:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [[event allTouches] anyObject];
NSLog(@"'Touches Began");
if ([touch view] == imageView) {
imageView.image = [imageArray objectAtIndex:1];
NSLog(@"Image touched and changed");
}
现在,因为我希望imageView显示两次以上的更改,我尝试在for循环中使用if语句而没有运气:
int touchCount = 0;
for (touchCount = 1; touchCount < 4; touchCount++) {
if ((touchCount < 4) && ([touch view] == imageView)) {
imageView.image = [imageArray objectAtIndex:touchCount];
NSLog(@"Touch Count = %d", touchCount);
}
}
运行时,调试器显示“Touch Count = 0”,然后崩溃并退回到主屏幕。有人可以帮忙解决这个问题吗?我的观念错了吗?
答案 0 :(得分:1)
将整数作为实例变量来存储正在显示的图像。在viewDidLoad上将此值设置为0。
在图像视图上注册触摸时,递增整数。如果该值等于图像数组的计数,请将其设置回0.
将图像设置为图像数组的元素,由整数值表示:
// touch registered on image
currentImage++;
if (currentImage == [imageArray count])
currentImage = 0;
imageView.image = [imageArray objectAtIndex:currentImage];