2010-12-12 71 views
3

我無法獲得具有多個UIImageView子視圖的UIScrollView以正確縮放,因此我嘗試使用帶有多個UIScrollView子視圖的UIScrollView以及其中的每個UIImageView。這樣一個UIScrollView只能滾動,而另一個只能縮放。如何訪問嵌套的UIScrollViews中的子視圖

我的問題是:如何訪問子視圖的子視圖。我知道通常我可以使用[scrollView viewWithTag:tagInt];來訪問子視圖,但我似乎無法使用[[scrollView viewWithTag:tagInt] viewWithTag:tagInt2];來訪問子視圖的子視圖,因爲viewWithTag只返回一個UIView而不是所有的子視圖。

我總是可以給每個子視圖一個獨特的標籤並以這種方式訪問​​它們,但這似乎並不是最優雅的解決方案。

什麼是訪問子視圖然後進入子視圖的子視圖(即:訪問我的UIScrollView用於縮放這是我的主視圖的子視圖,然後訪問它的子視圖UIImageView)的最佳方式是什麼?

回答

0

最優雅的做法是將子類UIScrollView賦予UIImageView屬性。這樣的話,你可以用一些訪問此UIImageView像:

MyScrollView *myScrollView = (MyScrollView *)[scrollView viewWithTag:tagInt]; 
UIImageView *imageView = myScrollView.imageView; 

希望這有助於!

+0

這聽起來像一個很好的解決方案,但不幸的是,子類化現在有點凌駕於我的頭上。有沒有更簡單的方法來訪問子視圖的所有子視圖? – Jackson 2010-12-12 14:25:02

0

您可以使用子視圖屬性獲取任何UIView的子視圖數組。

for(UIView *subview in [myScrollView subviews]) { 
    // do anything with your subview here. 
} 
3

如果您現在不習慣繼承子類,您必須將標籤分配給包含圖像的UIScrollViews。然後你必須做更多的工作,BobC建議。

for (UIView *subview in [myScrollView subviews]) 
{ 
    //check if the current subview is one of the UIScrollViews 
    if (subview.tag > 100) 
     //do something with the UIScrollView 
}