для правильной работы UIPickerView необходимо указать количество компонентов (столбцов) и количество строк для каждого компонента при каждой его перезагрузке: как уже упоминалось, используйте [myPickerView reloadAllComponents];
для перезагрузки представления после заполнения массива, но вы ДОЛЖНЫ также реализовать эти вещи после того, как вы объявите содержащий контроллер класса представления как <UIPickerViewDelegate>
, связывает средство выбора с владельцем файла как делегат, а затем:
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
return 1;// or the number of vertical "columns" the picker will show...
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
if (myLoadedArray!=nil) {
return [myLoadedArray count];//this will tell the picker how many rows it has - in this case, the size of your loaded array...
}
return 0;
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
//you can also write code here to descide what data to return depending on the component ("column")
if (myLoadedArray!=nil) {
return [myLoadedArray objectAtIndex:row];//assuming the array contains strings..
}
return @"";//or nil, depending how protective you are
}