感谢@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以成功迭代数组中的图像?
答案 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];
}
}