Подборщик не будет иметь подпредставлений, пока он не будет полностью загружен. Если вы попытаетесь сделать это:
[(UIView*)[[picker subviews] objectAtIndex:0] setHidden:YES];
[(UIView*)[[picker subviews] objectAtIndex:10] setHidden:YES];
в viewDidLoad или viewWillAppear это не будет работать . Однако я переместил свой в один из методов протокола UIPickerView, и он удалил фоновый фрейм.
- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
if (self.pickerBackgroundNotHidden)
{
self.pickerBackgroundNotHidden = false;
[(UIView*)[[tempPicker subviews] objectAtIndex:0] setHidden:YES];
[(UIView*)[[tempPicker subviews] objectAtIndex:7] setHidden:YES];
[(UIView*)[[tempPicker subviews] objectAtIndex:8] setHidden:YES];
}
return [arrayColors objectAtIndex:row];
}
Возможно, вы могли бы создать подкласс средства выбора, чтобы сделать это немного более эффективно, но я предпочитаю избегать создания подклассов.
Да, это также очевидно, но если в вашем средстве выбора нет элементов, приведенный выше код не удалит вложенные представления.