1

我的 Xcode 项目中有两个 for 循环,用于更改 9 个 UIImageViews 中的图像。这些 UIImageViews 中的图像是从服务器下载然后呈现的。

我的 for 循环使用 3 个不同的整数来确定要显示的图像:next、current_photo 和 previous 是整数。

我有两个 UIButtons 控制显示下一组和上一组图像。

当我想显示下一组图像时,我制作并使用了以下 for 循环:

NSArray *imageViews = @[picview_1, picview_2, picview_3, picview_4, picview_5, picview_6, picview_7, picview_8, picview_9];

        for (next = current_photo; next < (current_photo+9); next++) {
            NSString *next_set = [NSString stringWithFormat:@"%@%i.%@", SERVER_URL, next+1, FORMAT_TYPE];
            NSData *imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString: next_set]];
            UIImage *image = [[UIImage alloc] initWithData:imageData];
            [[imageViews objectAtIndex:(next-9)] setImage:image];
        }

        current_photo = next;

这个 for 循环完美运行,所有 9 个 UIImagesViews 都改变了图像。

但是,当我想在 9 个 UIImageViews 中显示上一组图像时,由于某种原因,以下 for 循环无法正常工作:

NSArray *imageViews = @[picview_1, picview_2, picview_3, picview_4, picview_5, picview_6, picview_7, picview_8, picview_9];

        for (previous = current_photo; previous > (previous-9); previous--) {
            NSString *next_set = [NSString stringWithFormat:@"%@%i.%@", SERVER_URL, previous+1, FORMAT_TYPE];
            NSData *imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString: next_set]];
            UIImage *image = [[UIImage alloc] initWithData:imageData];
            [[imageViews objectAtIndex:(previous-previous)] setImage:image];
        }

        current_photo = previous;

我的 for 循环有什么问题?请解释。

以下是打开我的应用程序时发生的情况: 打开的应用程序

以下是按下下一个按钮时发生的情况:

下一个

最后,当按下后退按钮时,应用程序就冻结了.....

为什么?怎么了?请帮忙。

谢谢你的时间 :)

4

1 回答 1

1

一方面:

[[imageViews objectAtIndex:(previous-previous)] setImage:image];

将始终将图像设置为 [0],其他任何人都不会为它们设置任何内容。

(previous = current_photo; previous > (previous-9); previous--) 

将永远循环!每次你做一个previous--,你要比较的东西知道什么时候停止,previous-9 也会下降一个。

我会推荐这个:

for (previous = current_photo; previous > (current_photo-9); previous--) {
    NSString *next_set = [NSString stringWithFormat:@"%@%i.%@", SERVER_URL, previous+1, FORMAT_TYPE];
    NSData *imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString: next_set]];
    UIImage *image = [[UIImage alloc] initWithData:imageData];
    [[imageViews objectAtIndex:(8 - (current_photo - previous))] setImage:image];
}
于 2013-07-27T16:27:45.103 回答