幻灯片显示需要先前图像按钮的多个图像。

时间:2012-01-07 03:12:01

标签: iphone cocoa-touch

我创建了一个图像数组。我希望能够创建一个以前的图像按钮,但我遇到了麻烦。这是我以前的按钮代码:

-(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]]];
}

1 个答案:

答案 0 :(得分:0)

我不知道你展示的代码(changeImage)应该是你想要用于上一个图像的代码,或者它只是你已经用于其他目的的代码来改变图像。但是这段代码有一些问题。

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

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

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

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

如果要返回上一个图像的多个步骤,并且随机生成图像索引,则需要一个数组来记住生成的随机索引的序列。这有点复杂,并且基于您目前为您的问题所展示的代码,您可能首先要保持简单,然后向后退一步。此外,您不会显示如何生成随机索引。如果您尚未编写代码,则需要编写该代码。