2013-10-23 100 views
0

我想用不同的標籤以編程方式創建多個UIImageView,並將它們添加爲我的主視圖的子視圖。以編程方式創建多個UIImageViews

我在報頭中的我的UIImageView的財產:

@property (strong, nonatomic) UIImageView *grassImage; 

然後我試圖創建多個視圖:

for (int i=0;i<13;i++){ 

     grassImage = [[UIImageView alloc] init]; 

     int randNum = arc4random() % 320; //create random number for x position. 

     [grassImage setFrame:CGRectMake(randNum, 200.0, 50.0, 25.0)]; 
     [grassImage setTag:i+100]; 
     [grassImage setImage:[UIImage imageNamed:@"grass"]]; 

     [self.view addSubview:grassImage]; 
    } 

但是,當我試圖訪問該圖像視圖中使用標籤,我只得到最後一個標籤 - 112.

我的問題 - 我如何正確訪問這個視圖,使用他們的標籤?

類似的問題:

+3

您根本不需要屬性聲明就可以使用它。 – Cyrille

+0

你如何_「使用標籤訪問此圖像視圖」_? – Amar

+0

只是使用這個。 UIImageView * imgViewRef =(UIImageView *)[self.view viewWithTag:TAG_NUMBER]; – Rajneesh071

回答

3

你只得到了最後一個,因爲你是重現了同樣的看法所有的時間。

擺脫變量,並添加您的看法是這樣的:

for (int i=0;i<13;i++){ 
    UIImageView *grassImage = [[UIImageView alloc] init]; 

    int randNum = arc4random() % 320; //create random number for x position. 

    [grassImage setFrame:CGRectMake(randNum, 200.0, 50.0, 25.0)]; 
    [grassImage setTag:i+100]; 
    [grassImage setImage:[UIImage imageNamed:@"grass"]]; 

    [self.view addSubview:grassImage]; 
} 

而得到的意見:

UIImageView *imgView = [self.view viewWithTag:110]; 
+0

這很有道理,謝謝,我會試試這個 – ignotusverum

+4

你正在創建多個圖像視圖!答案是不正確的。購買你只能訪問grassImage中的最後一個imageview。你應該仍然可以調用[self.view viewWithTag:100]; - [self.view viewWithTag:112];並訪問每一個! –

+0

你說得對,Nils Ziehn – ignotusverum

0

使用此代碼獲取子視圖與特定tag

UIImageView *imgViewRef = (UIImageView *)[self.view viewWithTag:TAG_NUMBER]; 
0

既然您是一次又一次地重新創建相同的圖像,如果您訪問grassImage它會給你你創建的最後一個imageview。相反,你可以像這樣得到imageview。

for (UIImageView *imgView in self.view.subviews) { 
     if ([imgView isKindOfClass:[UIImageView class]]) { 
      NSLog(@"imageview with tag %d found", imgView.tag); 
     } 
    } 
相關問題