随机混淆

时间:2012-05-24 07:35:02

标签: iphone ios xcode

所以在我的旋转木马中我实现了这个:

- (UIView *)carousel:(iCarousel *)_carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
{   
   // int randomforIndex = arc4random()%[images count]+1;
        UIImageView *imageView  = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[images objectAtIndex:index]]];
        return imageView;


}

我使用NSString分配我的图片。只要带有图像的轮播停在特定[images objectAtIndex:index],它就会执行相应的操作。 但是当我使用randomforIndex部分作为我的index时,这一切都变得混乱了。所以我的问题是如何在不随机输入值的情况下随机拍摄图像。

这是我用NSString添加图像的方式:

for (int x=1; x<76;x++) {
        // add as NSString
        [images addObject:[NSString stringWithFormat:@"%d", x]];
            }

2 个答案:

答案 0 :(得分:0)

您将必须单独存储随机列表。创建另一个数组并将随机序列放入该数组中。然后,您可以将其用作数据源,并保持数字和图像之间的链接不变。

答案 1 :(得分:0)

您可以尝试这样做:首先使用您的代码填充images数组。然后你 shuffle 这个有序数组。这里有一个很好的NSArray shuffle类别:Shuffling an NSArray

请注意,您应该删除NSArray+Helpers.h

中的空#import行
images = [[NSMutableArray alloc] init];
for (int x=1; x<76;x++)
{
    [images addObject:[NSString stringWithFormat:@"%d.png", x]];
}
images = (NSMutableArray *)[images shuffled];

这部分代码经过测试并且有效。

从这一点开始,你可以使用简单的viewForItemAtIndex,没有任何随机化,因为文件名已经被删除了。

- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
{   
    if (view == nil)
    {
        view = [[UIImageView alloc] init];
    }

    UIImage* nimage = [UIImage imageNamed:[images objectAtIndex:index]];
    view.image = nimage;
    view.frame = CGRectMake(0.0,0.0,nimage.size.width,nimage.size.height);  

    return view;
}