2010-12-12 36 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 
}