Ваш вышеприведенный код дает сбой в iOS 7. Я нашел решение этой проблемы. Я знаю, что это не так, но уверен, что это работает, пока 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 найдет оптимальное решение для этого, пожалуйста, прокомментируйте. :)
Счастливое кодирование