【问题标题】:How to access subviews in nested UIScrollViews如何访问嵌套 UIScrollViews 中的子视图
【发布时间】:2011-05-24 03:52:27
【问题描述】:

我无法让具有多个 UIImageView 子视图的 UIScrollView 正确缩放,因此我尝试使用内部具有多个 UIScrollView 子视图的 UIScrollView 以及每个内部的 UIImageView。这样一个 UIScrollView 只能滚动,另一个只能缩放。

我的问题是:如何访问子视图的子视图。我知道通常我可以使用 [scrollView viewWithTag:tagInt]; 访问子视图,但我似乎无法使用 [[scrollView viewWithTag:tagInt] viewWithTag:tagInt2]; 访问子视图的子视图,因为 viewWithTag 只返回一个 UIView 而不是所有子视图。

我总是可以给每个子视图一个唯一的标签并以这种方式访问​​它们,但这似乎不是最优雅的解决方案。

访问子视图然后访问子视图的子视图的最佳方法是什么(即:访问用于缩放的 UIScrollView,这是我的主视图的子视图,然后访问它的子视图 UIImageView)?

【问题讨论】:

    标签: cocoa-touch uiscrollview uiimageview subview


    【解决方案1】:

    如果您现在对子类化感到不舒服,则必须将标签分配给包含图像的 UIScrollView。然后你必须按照 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
    }
    

    【讨论】:

      【解决方案2】:

      您可以使用 subviews 属性获取任何 UIView 的子视图数组。

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

      【讨论】:

        【解决方案3】:

        最优雅的方法是继承UIScrollView,给它一个UIImageView 属性。这样,您可以通过以下方式访问此UIImageView

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

        希望这会有所帮助!

        【讨论】:

        • 这听起来像是一个不错的解决方案,但不幸的是,子类化现在有点过头了。有没有更简单的方法来访问子视图的所有子视图?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-01-12
        • 2023-03-17
        • 1970-01-01
        • 2014-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多