2013-01-09 39 views
1

我有這樣的代碼:訪問的UIView正確

int i=0; 
for (UIView *view in [self subviews]) { 
    //NSLog(@"index %d - i %d",index,i); 
    if (i==index) { 
     NSLog(@"index %d - i %d",index,i); 
     [view setAlpha:0.3]; 
     [view setUserInteractionEnabled:NO]; 
    } 
    i++; 
} 

「指標」是用來選擇修改視圖的變量。

的問題是,沒有發生,相反,如果我運行此代碼:

for (UIView *view in [self subviews]) { 
    [view setAlpha:0.3]; 
    [view setUserInteractionEnabled:NO]; 
} 

每個視圖將明顯改變,但我需要的第一個代碼:)

想法?

+1

嘗試設置標籤將視圖,並檢查與像 INDEX如果(view.tag ==指數) {view_set_Alpha:0.3]; [view setUserInteractionEnabled:NO]; } 甚至認爲這不是一個好辦法.. – Bala

+2

我建議你使用標籤來唯一標識scrolview中的每個視圖,而不是索引,以便你可以在一行代碼中找到你的視圖'[scrolview viewWithTag:標籤]',然後對其執行任何操作。標籤值實際上可以與索引相同。 –

+0

是你沒有設置標籤? – amar

回答

1

將所有的子視圖的標籤滾動視圖內,然後通過選擇視圖的標籤索引變量希望是一個整數。

for(int i = 1; i <=4; i++){ 

    UIView *myView = [UIView......]; // set your view 
    myView.tag = i; 
    [your_scrollView addSubview:myView]; 
} 

然後你可以做下面的事情。

for (UIView *view in [your_scrollView subviews]) 
{ 
    if (view.tag == index) 
    { 
    [view setAlpha:0.3]; 
    [view setUserInteractionEnabled:NO]; 
    } 
} 

或有一個簡單的方法來獲取視圖[your_scrollView viewWithTag:指數]

+0

偉大的工程!謝謝!答覆檢查!但我不明白爲什麼,在我的第一個代碼中,NSLog寫入了正確的值對,但是視圖保持不變。 – Lucabro

0

試試這個代碼: -

for (UIView *view in [scrollView subviews]) { 
     [view setAlpha:0.3]; 
     [view setUserInteractionEnabled:NO]; 
    } 

希望工程