带有随机对象的NSMutableArray

时间:2012-08-16 00:06:15

标签: objective-c arrays random

这是我在这个论坛上的第一个问题,我希望你不要怪我。我正在尝试制作应用,并需要NSMutableArray的帮助。

我在.h文件中声明了一些UIIMageView对象,如下所示:

IBOutlet UIImageView *image1;
IBOutlet UIImageView *image2;
NSMuttableArray *images;

在.m文件中我设置了隐藏:是。 我也将它们插入NSMuttableArray中,如下所示:

images = [[NSMutableArray alloc] initWithCapacity:2];
    [images addObject:image1];
    [images addObject:image2];
  1. 如何将数组中的随机UIImageView设置为setHidden:NO
  2. 如何将该对象设置为未隐藏后从Array中删除该对象?
  3. -(IBAction) btnclick {}之类的操作之后再次隐藏并显示来自此NSMuttableArray的下一个随机图像以防万一更多。

2 个答案:

答案 0 :(得分:1)

这可能是你想要做的:

(我也会把它变成一个UIImages数组,因为这就是你应该呈现随机图像的方式,但是你也可以用UIImageViews做这个,这也是不推荐的)

-(void)buttonClickedMethod
{
    if(images.count > 0)
    {
        int randomValue = arc4random_uniform(images.count); //get yourself a nice random value as used in http://stackoverflow.com/questions/160890/generating-random-numbers-in-objective-c
        myImageView.image = [images getObjectAtIndex:randomValue]; //get yourself the random image and set it to your UIImageView (which you probably want it to be image1 or image2 in your case)
        [images removeObjectAtIndex:randomValue]; //remove the random image from you list so that you want get it again the next you click the button
    }
}

这可能是解决问题的最佳方法。

您可能希望添加一个方法,以便随后从图像视图中删除随机图像,但您可能不会再次删除。

答案 1 :(得分:0)

我认为您可以尝试的一种方法如下:

  1. 为每个UIImageView分配一个标记。假设你有100 UIImageView个,所以你有1到100的标签。这可以通过[view setTag:1];来完成。

  2. 您创建的NSMutableSet包含1 - 100(他们需要NSNumber,因为NSSet只接受对象。)

  3. 要从集合中检索对象,请执行[set anyObject]。然后,您可以将其转换回整数并使用viewWithTag:来获取视图。然后你可以setHidden:NO

  4. 最后,您从NSMutableSet轻松删除对象。

  5. 根据定义,数组是有序的。套装更适合您的目的。另外我认为将UIImageView添加到数组有点奇怪。