【发布时间】:2011-04-14 13:51:07
【问题描述】:
我正在使用 nib 文件加载视图:
NSArray *nibViews = [[NSBundle mainBundle] loadNibNamed:@"AnalysisView" owner:self options:nil];
AnalysisView *gridView = [nibViews objectAtIndex: 0];
nib 包含一个名为 gridScrollView 的滚动视图,在 AnalysisView 实现文件中,我有一个将视图作为子视图添加到滚动视图的方法:
for (NSInteger i = [results count] -1; i >= 0; i--)
{
Result *result = [results objectAtIndex:i];
[self loadResult: result];
}
- (void) loadResult: (Result *) result
{
NSArray *nibViews = [[NSBundle mainBundle] loadNibNamed:@"GridView" owner:self options:nil];
GridView *gridView = [nibViews objectAtIndex: 0];
gridView.tag = self.graphCount;
CGRect gridFrame = gridView.frame;
CGFloat yOffset = gridFrame.size.height * self.graphCount;
gridView.frame = CGRectMake(0, yOffset, gridFrame.size.width, gridFrame.size.height);
[self.gridScrollView addSubview: gridView];
self.gridScrollView.contentSize = CGSizeMake(self.gridScrollView.frame.size.width, (yOffset + gridFrame.size.height));
self.graphCount++;
}
我已将滚动视图委托设置为 AnalysisView 并连接了 do end decelaring 方法
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
NSLog(@"%d", [scrollView.subviews count]);
}
当 scrollViewDidEndDecelerating 方法触发时,它报告子视图的数量是 5。这些子视图中的 3 个是我期望的 GridView。但是有 2 个 UIImageViews 我不知道它们为什么在那里。
这是一个问题,因为我打算在 scrollViewDidEndDecelerating 方法中使用 viewWithTag 检索视图并在视图上调用一个方法,但是每当我尝试检索标签为 0 的视图时,我都会检索其中一个 UIImageView 和 this导致我的应用程序崩溃,因为无法在图像视图上调用该方法。
我知道一种解决方法是将我的 GridView 存储在一个单独的实例数组中并从那里引用它们。但我很想知道这 2 个 UIImageView 是什么以及它们是如何到达那里的。
【问题讨论】:
标签: ios uiscrollview uiimageview