Количество просмотров UIPickerview всегда равно 3 в iOS 7?

Я только начал переходить на iOS 7 и обнаружил несколько проблем, связанных с UIPickerView в моем приложении. И причина в том, что я использовал подвиды UIPickerView для настройки фона и стиля. Я регистрирую количество подвидов UIpickerview, и оно всегда равно 3:

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView
 {
   return 1;
 }

 -(NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent: (NSInteger)component
{
   return 22;
}

-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
   UILabel* label = [[UILabel alloc]init];
   label.frame = CGRectMake(152, 3,100, 16);
   label.text = @"test";
   NSLog(@"count is %i",_pickerView.subviews.count);
   return label;
}

Я iOS 6.1, счет всегда 9.

Редактировать 1: Еще одно отличие: приведенный ниже код дает сбой на iOS 7 и без проблем работает на iOS 6.

-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{ 
   UILabel* label = [[UILabel alloc]init];
   label.frame = CGRectMake(152, 3,100, 16);
   label.text = @"test";

   if(row > 3){
     UIView* view = [pickerView viewForRow:3 forComponent:0]; // crash in iOS 7
   }

    NSLog(@"count is %i",_pickerView.subviews.count);
    return label;
}

Редактировать 2: _pickerView.showsSelectionIndicator = NO;

не имеет никакого отношения к iOS 7.

Может кто-нибудь объяснить, как это работает?


person someUser    schedule 17.09.2013    source источник
comment
Внутренняя структура представления выбора — это всего лишь деталь реализации, которая может различаться в разных версиях ОС. Вы не должны зависеть от этого в любом случае   -  person Vladimir    schedule 17.09.2013
comment
@Vladimir Пожалуйста, посмотрите мое редактирование.   -  person someUser    schedule 17.09.2013
comment
Какое сообщение об ошибке вы получаете при сбое? Я запустил пример проекта с вашим кодом, и он работал нормально   -  person Vladimir    schedule 17.09.2013
comment
Завершение работы приложения из-за неперехваченного исключения «NSRangeException», причина: «*** -[__NSArrayM objectAtIndex:]: индекс 3 за пределами [0 .. 2]» *** Первый вызов стека вызовов: (Прокрутите средство выбора, и произойдет сбой )   -  person someUser    schedule 17.09.2013
comment
Я обновил свой вопрос, пожалуйста, посмотрите изменения.   -  person someUser    schedule 17.09.2013