使用UISwitch和NSMutableArray切换图片

时间:2017-01-31 17:04:59

标签: ios objective-c uibutton nsmutablearray

我是一个车辙..帮助帮助..

我正在处理的代码是这样的:

一旦打开,显示第一张图片,然后在关闭时出现第二张图片。如果开关三次,则在关闭时出现第三张图片和第四张图片。这些过程预计将重复五次。我把图片放在数组中。如何使用NSMutableArray和UISwitch来使我的代码生效......?

这些是我的试验:

-(IBAction)switchAction:(id)sender {

    if(_switchClick.isOn == YES)
    {
        NSMutableArray* pictureList = [NSMutableArray arrayWithObjects:[UIImage imageNamed:@"songHae.png"], [UIImage imageNamed:@"pai.png"], nil];
        [_imageFrame setImage:[pictureList objectAtIndex:0]];

    }
    else
    {
        [_imageFrame setImage:[UIImage imageNamed:@"lion.png"];
    }
}

2 个答案:

答案 0 :(得分:0)

在switchAction处理程序之外定义图片列表,以及currentPictureIndex跟踪变量。

int currentPictureIndex = 0;

然后在你的处理程序中你可以这样做:

[_imageFrame setImage:[pictureList objectAtIndex:currentPictureIndex++]];
if (currentPictureIndex >= pictureList.count) {
    currentPictureIndex = 0
}

这将使您的图片在按钮的每次状态更改时都会发生变化。

答案 1 :(得分:0)

首先,声明数组在函数外部,因此无需在每个开关上初始化它,也需要初始化更多数量的图像(10个图像),因为你想用不同的图像做五次。

int currentPictureIndex = 0;
int numberOfTries = 0;
-(IBAction)switchAction:(id)sender {

if(_switchClick.isOn == YES )
{
    [_imageFrame setImage:[pictureList objectAtIndex:currentPictureIndex]];
    numberOfTries++;

}
else
{
    [_imageFrame setImage:[pictureList objectAtIndex:currentPictureIndex+1]];
}
if(numberOfTries%3 == 0 )
{
   currentPictureIndex  = currentPictureIndex+2;
}
else if(pictureList.count==currentPictureIndex+2)
{
     currentPictureIndex = 0;
     numberOfTries = 0;
}
}