2010-04-10 49 views
1

我想用UIImageViews加載一個NSMutableArray。一切都很順利。NSMutableArray withObject(UIImageView *)

不幸的是,我不知道如何在可變數組中使用這些對象。

下面是一些代碼:

UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 
NSMutableArray *array = [NSMutableArray new]; 
[array loadWithObject:(UIImageView *)imageView]; 
[imageView release]; 

那樣的設置我做了什麼。這是我想要做的:

[array objectAtIndex:5].center = GCRectMake(0, 0); 

但這並不起作用。我怎樣才能做到這一點??

回答

3

好的,我會解釋你遇到的問題。做你正在嘗試做的方法如下:

UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 
NSArray *array = [NSArray arrayWithObject:imageView]; 
[imageView release]; 
[[array objectAtIndex:0] setCenter:CGPointMake(0.0,0.0)]; 

首先,有沒有一種方法-[NSMutableArray loadWithObject:]。同樣,對於你的例子,你甚至不需要一個可變數組。可變對象有自己的位置,但我通常嘗試使用不可變的對象;因此,我使用NSArray

接下來,當您將它們添加到數組時,您無需使用類型轉換對象。有你因此例如一些原因沒有工作:

  1. 您在訪問數組中的第六個(從1開始)對象。該指數是否存在UIImageView的實例?

  2. 由於某些原因,只有當編譯器知道發送消息的對象的類型時,getters和setter的點符號才起作用。由於在編譯時從數組中傳出的對象的類型不明確,因此不能使用點符號。相反,只需使用傳統的Objective-C方法發送語法(「括號和冒號」)即可。

  3. 最後,這是核芯顯卡,不戈爾Craphics:因此前綴CG,不GC。另外,-[UIImageView setCenter:]需要CGPoint,而不是CGRect。所以你想要的功能是CGPointMake

祝你好運!讓我知道這是否有助於清除一些事情。

+0

謝謝。對不起,關於GC和RectMake錯別字。我已經有了我的代碼。我只是想總結一下我所做的。我需要的是setCenter:東西。很棒。再次感謝。 – androidnotgenius 2010-04-10 06:12:41

+0

好,新的問題。如何在不使用點符號的情況下獲取UIImageView框架的高度/寬度? – androidnotgenius 2010-04-10 06:45:30

+0

Ooops,這裏是令人困惑的部分:Objective-C對象的點符號只適用於明確類型的對象,但普通C結構的點符號與以往一樣工作。由於'CGRect'是一個結構,只需嘗試以下內容:'CGFloat height = [(UIImageView *)[arr objectAtIndex:5] frame] .size.height;'。 – 2010-04-10 07:16:11

3

我想你應該參考NSMutableArray

但是,我只是給了一個NSMutableArray的概述。

  • 的NSMutableArray =下一步(NS)可變數組
  • 易變裝置陣列可被修改爲在需要時。
  • 現在,這個可變數組可以容納任何類型的對象。
  • 假設我想將字符串存儲在數組中。我會寫下面的陳述。

NSMutableArray *anArray=[[NSMutableArray alloc] init];
[anArray addObject:@"Sagar"];
[anArray addObject:@"pureman"];
[anArray addObject:@"Samir"];

  • 在這裏,我發現,你需要存儲在imageViews您的要求。

NSMutableArray *anArray=[[NSMutableArray alloc] init];
UIImageView *imgV1=[[UIImageView alloc] initWithFrame:CGRectMake(10,50,60,70)];
UIImageView *imgV2=[[UIImageView alloc] initWithFrame:CGRectMake(10,110,60,70)];
UIImageView *imgV3=[[UIImageView alloc] initWithFrame:CGRectMake(10,170,60,70)];
UIImageView *imgV4=[[UIImageView alloc] initWithFrame:CGRectMake(10,210,60,70)];
[anArray addObject:imgV1];
[anArray addObject:imgV2];
[anArray addObject:imgV3];
[anArray addObject:imgV4];

  • 現在,一旦將ImageView添加到數組中,將數組視圖釋放爲數組並保留其數量。

[imgV1 release];
[imgV2 release];
[imgV3 release];
[imgV4 release];

  • 上面的代碼將圖像添加到NSMutableArray的
  • 當您使用從一個陣列圖像的一個,只是記下這件事
    UIImageView *x=[anArray objectAtIndex:0];

  • 希望以上描述適合您。

  • 如果您不理解,請添加評論。
+0

我發現這非常有幫助。謝謝 – androidnotgenius 2010-04-10 06:21:30

相關問題