Динамически добавлять значения в UIPickerView во время выполнения

Как можно динамически добавлять значения в UIPickerView во время выполнения.

Я использую следующий код для статического заполнения UIPickerView. Необходимо динамически добавлять значения во время выполнения, например, три, четыре и т. Д.

- (NSString *) pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{

    NSString *title = nil;
    if(row==0){
        title = @"One"; 
    }
    if(row==1){
        title = @"Two"; 
    }

Ответов (2)

Решение

Если бы у вас был массив заголовков, вы могли бы использовать что-то вроде:

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
  return [titles objectAtIndex:row];
}

Заголовки будут обновлены, когда вы позвоните [pickerView reloadAllComponents] (или reloadComponent: если у вас более одного столбца и вы хотите обновить только один из них).

Привет, у меня была проблема с UIPickerView ..... когда я вызываю reloadAllComponents, он не вызывал widthForComponent, но он вызывал другие методы делегата, такие как titleForRow .... Я понятия не имею, почему это так, возможно, яблоко не хотите, чтобы ширина менялась динамически? в любом случае это было на другом экране, поэтому у меня не было проблемы с анимацией / без анимации. Я обнаружил, что, сбросив делегата средства выбора, я могу снова вызвать widthForComponent!

т.е.

picker.delegate = view;

где view реализует UIPickerViewDelegate .... надеюсь, это кому-то поможет!