【问题标题】:Removing subviews from UIScrollView从 UIScrollView 中删除子视图
【发布时间】:2011-07-04 17:19:35
【问题描述】:

我需要从ScrollView 中删除图像subviews,并尝试从subviewsarray 中删除,但这是一个不可变的NSArray

如何从subviewsscrollviews array 中删除subview

【问题讨论】:

    标签: iphone cocoa-touch ios uikit uiscrollview


    【解决方案1】:
        NSArray *viewsToRemove = [scrollView subviews];
        for (UIView *v in viewsToRemove) [v removeFromSuperview];
    

    【讨论】:

    • 这样做你也会删除滚动指示器...看来我们必须检查要删除的视图的类型。
    【解决方案2】:

    你可以这样做,

    [[scrollView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
    

    【讨论】:

      【解决方案3】:

      这将删除 UIScrollView 的所有子视图,但它的滚动指示器: _scrollView.showsHorizo​​ntalScrollIndicator = _scrollView.showsVerticalScrollIndicator = NO; [_scrollView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; _scrollView.showsHorizo​​ntalScrollIndicator = _scrollView.showsVerticalScrollIndicator = YES;

      【讨论】:

      • 显然[_scrollView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; 将删除所有 UIScrollView 子视图,包括其滚动指示器。在从滚动视图中删除所有子视图之前隐藏滚动指示器将确保滚动指示器不会从滚动视图中删除。
      【解决方案4】:
      for (UIView *v in [scrollView subviews]) {
          [v removeFromSuperview];       
      }
      

      【讨论】:

        【解决方案5】:

        在子视图上调用 -removeFromSuperview。

        【讨论】:

          【解决方案6】:

          斯威夫特

          for subview in scrollView.subviews {
              subview.removeFromSuperview()
          }
          

          【讨论】:

            猜你喜欢
            • 2011-05-05
            • 2016-06-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-01-25
            相关资源
            最近更新 更多