2012-01-07 89 views
0

我创建了一个图像数组。我想能够创建一个以前的图像按钮,但有麻烦。这是我以前的按钮代码:幻灯片放映需要上一个图像按钮的多个图像。

-(IBAction)changeImage:(id)sender 
{ 
    int ptr = 0; 

    if (ptr <= 5) 
    { 
     ptr--; 
     ptr = 5; 
     [imageView setImage:[images objectAtIndex:ptr]]; 
    } 

    NSArray *images = [[NSArray alloc] initWithObjects:@"Americans.png",@"Approach.png",@"Arianny.png",@"Atoms.png",@"Australia.png",@"Average.png",nil]; 

    [imageView setImage:[UIImage imageNamed:[images objectAtIndex:ptr]]]; 
} 
+0

以前的图像应该是1?它是5吗?你用很长的路实现了你的逻辑。 – AAV 2012-01-07 03:27:13

+0

我以数字为例。我有一组图像设置为随机显示(没有给定的顺序)。我想这个按钮能够显示目前正在显示(在某种意义上可以追溯到) – 2012-01-07 03:33:22

回答

0

我不知道你展示的代码(changeImage)应该是你要使用以前的图像的代码,或者它只是你已经打算码为了一些其他目的来改变图像。但是这段代码有一些错误的地方。

变量ptr的作用域只在方法块内,因此它将始终设置为0,然后递减,然后设置为5.因此,当changImage方法时,您总是会最终在索引5处显示图像执行。另外,如果你有两个引用图像数组的方法,那么这个数组必须是一个ivar,你可以在初始化代码中设置它。

从我可以告诉你的问题,你想要做的一件事是将图像更改为数组images中图像范围内的另一个随机图像。你想要做的第二件事是显示之前显示的图像。

所以,你需要两种方法。一种方法会在图像阵列的有效索引范围内生成一个随机索引。另一种方法显示之前显示的图像。

所以,你需要设置包含显示的最后图像的索引伊娃。第一种方法必须在生成新的随机索引之前立即替换该ivar中的值。第二个(showPrevious)方法将使用此'lastIndex'ivar的值来选择要返回的索引。

如果你想回到以前的图像的不止一个步骤,并且图像索引是随机生成的,那么你就需要一个数组记住生成的随机索引的顺序。稍微复杂一点,根据你所提出的问题,你可能会先保持简单,然后向后退一步。此外,您不显示如何生成随机索引。如果您尚未完成该任务,则需要编写该代码。

+0

u能提供某种形式的我怎么会去前面的图像代码前面的图像?因为这是我有麻烦这样做。 – 2012-01-08 04:55:49