В моих усилиях по обновлению моего приложения для поддержки IOS7 я узнал, что UIPageControl
не поддерживает UIImageView
. Они изменили его.
Я подклассифицирую UIPageControl
, чтобы добавить обычные круги вместо обычных (приложенный пример)
Мой класс:
- (id)initWithFrame:(CGRect)frame
{
// if the super init was successfull the overide begins.
if ((self = [super initWithFrame:frame]))
{
// allocate two bakground images, one as the active page and the other as the inactive
activeImage = [UIImage imageNamed:@"active_page_image.png"];
inactiveImage = [UIImage imageNamed:@"inactive_page_image.png"];
}
return self;
}
// Update the background images to be placed at the right position
-(void) updateDots
{
for (int i = 0; i < [self.subviews count]; i++)
{
UIImageView* dot = [self.subviews objectAtIndex:i];
if (i == self.currentPage) dot.image = activeImage;
else dot.image = inactiveImage;
}
}
// overide the setCurrentPage
-(void) setCurrentPage:(NSInteger)page
{
[super setCurrentPage:page];
[self updateDots];
}
Теперь в IOS7 я получил следующую ошибку:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView setImage:]: unrecognized selector sent to instance 0xe02ef00'
и после исследования я понял, что следующий код вызывает ошибку:
UIImageView* dot = [self.subviews objectAtIndex:i];
if (i == self.currentPage) dot.image = activeImage;
else dot.image = inactiveImage;
Я проверил subviews и увидел, что UIView вместо UIImageView. вероятно, Apple что-то изменила.
Есть идея, как это исправить?