1

嗨,我正在研究 customPageControl。它在 iOS 6 上运行良好,但在 iOS 7 上应用程序崩溃。详细场景如下:

我在我的项目中使用 customPageControl 文件。有关详细的 CustomPageControl,您可以通过此链接。在 iOS 6中[self.subviews objectAtIndex: 1]返回UIImageView,但在 iOS 7 中返回UIView. 我正在使用

UIImageView * imageView = [self.subviews objectAtIndex: 1];
imageView.image = [UIImage <SomeImage>];

在 iOS 7 中,它将UIViewimageView 作为并给出无法识别的 Selector 发送的异常。

请给我一些方向。

4

1 回答 1

0

我已经找到了解决这个问题的方法。我知道这不是办法,但可以肯定的是,在 iOS 8 上市之前它可以正常工作。

崩溃原因:

在 iOS 7 中[self.subViews objectAtIndex: i]返回UIView而不是UIImageView并且不是应用程序崩溃setImage的属性。UIView我使用以下代码解决了我的问题。

检查子视图是UIView(对于 iOS7)还是UIImageView(对于 iOS6 或更早版本)。如果是,UIView我将UIImageView在该视图上添加为子视图,瞧它的工作,而不是崩溃..!!

-(void) updateDots
{
    for (int i = 0; i < [self.subviews count]; i++)
    {
        UIImageView * dot = [self imageViewForSubview:  [self.subviews objectAtIndex: i]];
        if (i == self.currentPage) dot.image = activeImage;
        else dot.image = inactiveImage;
    }
}
 - (UIImageView *) imageViewForSubview: (UIView *) view
{
    UIImageView * dot = nil;
    if ([view isKindOfClass: [UIView class]])
    {
        for (UIView* subview in view.subviews)
        {
            if ([subview isKindOfClass:[UIImageView class]])
            {
                dot = (UIImageView *)subview;
                break;
            }
        }
        if (dot == nil)
        {
            dot = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, view.frame.size.width, view.frame.size.height)];
            [view addSubview:dot];
        }
    }
    else
    {
        dot = (UIImageView *) view;
    }

    return dot;
}

希望这也能解决 iOS7 的问题。如果 Anypone 找到了最佳解决方案,请发表评论。:)

快乐编码

于 2013-10-01T06:11:42.407 回答