2012-08-16 59 views
0

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

我在.h文件中声明的一些UIImageView的对象是这样的:

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

在.m文件我设置隐藏:YES。 我也插在他们的NSMuttableArray这样的:

images = [[NSMutableArray alloc] initWithCapacity:2]; 
    [images addObject:image1]; 
    [images addObject:image2]; 
  1. 我如何设置,现在一个随机的UIImageView从阵列是setHidden:NO
  2. 如何在将数组设置为未隐藏后从数组中删除该对象?
  3. 经过像-(IBAction) btnclick {}之类的操作后,再次隐藏并显示下一张来自此NSMuttableArray的随机图像,以防止它们变得更多。我想你可以尝试
+0

为什么UIImageView的数组?使用UIImages数组,以便您不必在屏幕上加载吨和大量的UIImageViews,并使其速度变慢 – 2012-08-16 01:07:20

+0

请问如何操作?因为当我试着在.h文件中声明IBOutlet UIImage时,在界面生成器中我不能放置这些对象。或者我应该把它们编程? – 2012-08-18 22:52:01

回答

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 
    } 
} 

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

您可能想要添加一种方法,可以随后从图像视图中删除随机图像,但是您可能不会。

0

的一种方法如下:

  1. 分配标签每个UIImageView的。假设你有100 UIImageView s,所以你有1 - 100的标签。这可以通过[view setTag:1];来完成,就像那样。

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

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

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

按照定义排列数组。设置对你的目的好得多。另外,我认为将UIImageView添加到阵列中有点奇怪。

+0

是用于MacOS开发的SET命令?因为我需要iOS。 – 2012-08-18 22:53:48

+0

SET命令是什么意思?我的答案中的所有内容都适用于iOS,并且iOS上提供了'NSSet'。 – aforaudrey 2012-08-18 23:02:08

+0

对不起!当我在developer.apple.com上搜索时,它显示这是一个可用于MacOS 10.4及更高版本的命令。现在我发现它也适用于iOS。再次抱歉。 – 2012-08-19 00:45:04