gpt4 book ai didi

ios - UIScrollView 幻象 subview

转载 作者:IT王子 更新时间:2023-10-29 08:10:26 24 4
gpt4 key购买 nike

我正在使用 nib 文件加载 View :

NSArray *nibViews = [[NSBundle mainBundle] loadNibNamed:@"AnalysisView" owner:self options:nil];
AnalysisView *gridView = [nibViews objectAtIndex: 0];

nib 包含一个名为 gridScrollView 的 ScrollView ,在 AnalysisView 实现文件中,我有一个将 View 作为 subview 添加到 ScrollView 的方法:

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++;
}

我已经将 scrollviews 委托(delegate)设置为 AnalysisView 并连接了 did end decelaring 方法

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
NSLog(@"%d", [scrollView.subviews count]);
}

当 scrollViewDidEndDecelerating 方法触发时,它报告 subview 的数量为 5。这些 subview 中的 3 个是我期望的 GridView。但是有 2 个 UIImageView,我不知道它们为什么在那里。

这是一个问题,因为我打算在 scrollViewDidEndDecelerating 方法中使用 viewWithTag 检索 View 并在 View 上调用方法,但是每当我尝试检索标签为 0 的 View 时,我将检索 UIImageView 之一和这个导致我的应用程序崩溃,因为无法在 ImageView 上调用该方法。

我知道解决这个问题的方法是将我的 GridView 存储在一个单独的实例数组中并从那里引用它们。但我很想知道这 2 个 UIImageView 是什么以及它们是如何到达那里的。

最佳答案

UIScrollView 默认包含 2 个 UIImageViews 作为滚动指示器的 subview 。虽然我在文档中找不到任何关于滚动指示器实现的具体信息,但这些 ImageView 存在于类声明中(参见 UIScrollView.h header ):

UIKIT_CLASS_AVAILABLE(2_0) @interface UIScrollView : UIView <NSCoding> {
...
UIImageView* _verticalScrollIndicator;
UIImageView* _horizontalScrollIndicator;

您也可以不从 0 而是从某个正数开始分配标签 - 这样可以避免与标准 subview 发生冲突

关于ios - UIScrollView 幻象 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5664281/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com