2011-10-14 125 views
0

我在代碼中創建了一個UIImageView,並且我想稍後獲取它並設置一個圖像。我該怎麼做,請幫忙?以編程方式從View獲取UIImageView。

for (int x = 1; x <= 5; x++) { 
UIImageView *Game_ImageViews = [[UIImageView alloc] 
          initWithFrame:CGRectMake(0, 0, 100, 100)]; 
    Game_ImageViews.tag = x; 
    [Game_View addSubview:Game_ImageViews]; 
} 


      UIImage *image = [[UIImage alloc] initWithContentsOfFile:[[[NSBundle mainBundle] resourcePath]  
                    stringByAppendingPathComponent:@"Test.png"]]; 
     (UIImageView*)[self.view viewWithTag:100].image = image; 
     [image release]; 

回答

0

viewWithTag如果存在具有該標記的子視圖,將爲您提供帶標記的視圖。因此,例如,您self.view就必須有一個具有爲100

最初是一個標籤的子視圖,您要設置的Game_View子視圖以1-4的標籤,2,3,5

所以,檢索子視圖的標籤,你必須做的,假設你想要檢索的ID 1標記的看法:

​​

兩三值得一提的其他事情。你在上面的循環中沒有釋放Game_ImageViews,所以會導致內存泄漏。

此外,如果您使用imageNamed方法UIImage,那會給你一些好處。首先,您將擁有可以提高性能的緩存圖像。其次,你會有一個自動釋放的對象,它可以節省你自己釋放它的麻煩。當然,除非你像上面所做的那樣通過這樣做來獲得最大的性能和控制力。

+0

非常感謝。其實我知道我的代碼中的標籤號碼是關閉的,我只是把它貼錯了,但我沒有注意到我試圖從錯誤的角度來看圖像。咄。使用點概念不能像你一樣工作,我猜想,因爲它需要轉換爲UIImageView。必須這樣寫:[(UIImageView *)[Game_View viewWithTag:1] setImage:image]; –

+0

是的,你是對的語法。我已經添加了一些括號來解決這個問題。您需要將由viewWithTag返回的UIView轉換爲UIImageView,然後調用.image屬性。 –