Image Array IBAction用于查看数组中的下一个图像

时间:2011-03-26 22:54:28

标签: iphone objective-c xcode ios4

感谢@JFoulkes我的应用程序在点击下一个按钮时显示数组中的第一个图像。但是,当我再次单击它时,它不会显示数组中的下一个图像。这让我相信我的IBAction下一个按钮不太正确。

这是我到目前为止的代码......

在我的.h文件中,我声明了:

IBOutlet UIImageView *imageView;
NSArray *imageArray;
NSInteger currentImage;

我还补充道:

-(IBAction) next;

在.m文件中我有:

-(void) viewDidLoad;
{
imageArray = [[NSArray arrayWithObjects: 
                [UIImage imageNamed:@"1.png"], 
                  [UIImage imageNamed:@"2.png"], 
                  nil] retain];
}

这是我的IBAction,它只显示数组中的第一个图像(1.png),再次单击时不会将UIImageView更改为第二个数组图像(2.png):

-(IBAction)next {

 if (currentImage + 1 == [imageArray count])
        currentImage = 0;
    UIImage *img = [imageArray objectAtIndex:currentImage];
    [imageView setImage:img]; 
   currentImage++;
}

基于代码,如何在点击后更改IBAction以成功迭代数组中的图像?

3 个答案:

答案 0 :(得分:0)

您需要删除

currentImage = 0;

这意味着将始终加载第一张图片

您需要添加一项检查以查看currentImage是否大于imagearray:

if (currentImage +1 < [imageArray count])
{
    currentImage++;
    UIImage *img = [imageArray objectAtIndex:currentImage];
    [imageView setImage:img]; 
}

答案 1 :(得分:0)

您的递增逻辑已损坏,因此第一次点击将无效,您永远无法到达最后一张图片。如果要在数组中添加3.png,这会更明显一些。逐步完成代码,观察它在每一步中的作用可能是有益的。

正确的递增逻辑看起来像这样:

- (void)next {
    currentImage++;
    if (currentImage >= imageArray.count) currentImage = 0;
    UIImage *img = [imageArray objectAtIndex:currentImage];
    [imageView setImage:img];
}

答案 2 :(得分:0)

创建一个图像数组,将其命名为图像,初始化整数“i” 在视图中,创建一个imageView和两个按钮(下一个和上一个),
将此代码用于按钮操作

-(void)nextButton:(id)sender
{
if (i < (array.count-1))
{
    i=i+1;
     imageView.image = [images objectAtIndex:i];
}
}

-(void)previousButton:(id)sender
{
if(i >= 1)
{
    i=i-1;
    imageView.image=[images objectAtIndex:i];
}
}