您好我正在使用customPageControl。它在iOS 6上工作正常,但iOS 7上的应用程序崩溃。详细的场景如下:
我在项目中使用了customPageControl文件。有关详细的CustomPageControl,您可以浏览此link。在iOS 6中,[self.subviews objectAtIndex: 1]
会返回UIImageView
,但在iOS 7中会返回UIView
。我正在使用
UIImageView * imageView = [self.subviews objectAtIndex: 1];
imageView.image = [UIImage <SomeImage>];
在iOS 7中,它将imageView视为UIView
,并提供未经识别的Selector发送的异常。
请给我一些指示。
答案 0 :(得分: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找到最佳解决方案,请发表评论。 :)
快乐编码