Динамически добавлять значения в UIPickerView во время выполнения - PullRequest
3 голосов
/ 25 февраля 2009

Как вы можете динамически добавлять значения в 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 ]

14 голосов
/ 25 февраля 2009

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

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

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

1 голос
/ 01 сентября 2009

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

т.е.

picker.delegate = view;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...