2012-08-16 63 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