Я только начал переходить на 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.
Может кто-нибудь объяснить, как это работает?