0

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

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

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

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

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

2 回答 2

1

这可能是你想要做的:

(我也将其设置为 UIImages 数组,因为这是您应该呈现随机图像 imo 的方式,但是您也可以使用 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
    }
}

这可能是处理您的问题的最佳方法。

您可能想要添加一个方法,之后从图像视图中删除随机图像,但您可能不会再次这样做。

于 2012-08-16T01:20:03.007 回答
0

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

  1. 为您的每个UIImageView. 假设你有 100UIImageView秒,所以你有 1 到 100 的标签。这可以通过[view setTag:1];类似的方式来完成。

  2. 您创建一个NSMutableSet包含 1 - 100 的对象(它们必须是NSNumbers,因为NSSet只接受对象)。

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

  4. 最后,您从NSMutableSet简单的东西中删除该对象。

数组根据定义是有序的。Set 更适合您的目的。UIImageView另外我认为将s 添加到数组中有点奇怪。

于 2012-08-16T00:48:05.833 回答