我需要在UIScrollView
中获取所有子视图的数组。现在我正在使用
NSArray *subviews = [myScrollView subviews];
但这似乎只返回代码运行时可见的子视图。我需要在UIScrollView的整个范围内的所有子视图,甚至是当前隐藏的那些(如在屏幕外)。我怎么能得到它?
基本上,我正在寻找像contentSize
的{{1}}属性之类的东西,除非只返回UIScrollView
的大小,如果它足够大以显示所有它是内容,我希望它能够返回内容。
编辑:我想我已经弄清楚了:滚动视图不适用实际上是UIScrollView
- 而且我认为它正在消除我屏幕上的单元格,这就是为什么他们没有出现。我打算做一些测试来确认。
答案 0 :(得分:8)
尝试使用以下代码为我工作。
for(UIView * subView in myScrollView.subviews ) // here write Name of you ScrollView.
{
// Here You can Get all subViews of your myScrollView.
// But For Check subview is specific UIClass such like label, button, textFiled etc.. write following code (here checking for example UILabel class).
if([subView isKindOfClass:[UILabel class]]) // Check is SubView Class Is UILabel class?
{
// You can write code here for your UILabel;
}
}
答案 1 :(得分:3)
<强> TL;博士强>
事实证明
NSArray *subviews = [myScrollView subviews];
确实会返回UIScrollView *myScrollView
中的所有子视图,即使它们在屏幕外也是如此。
详情
我实际遇到的问题是我尝试使用它的滚动视图实际上是UITableView
,当UITableViewCell
中的UITableView
出现在屏幕外时实际上它已从UITableView
中移除 - 所以当我调用subviews
时,我正在寻找的单元格不再位于滚动视图中。
我的解决方法是在我的UITableViewCell
调用的单独方法中构建所有viewDidLoad
,然后将所有这些单元格放入数组中。然后,我没有使用subviews
,而是使用了那个数组。当然,这样做会稍微损害性能(在cellForRowAtIndexPath
中你只是从数组返回单元格,这比通常使用的dequeueReusableCellWithIdentifier
方法慢,但它是唯一的我可以找到获得我需要的行为的方式。