Получить значение из UIPickerView - PullRequest
0 голосов
/ 06 марта 2012

Не могу получить начальное значение от UIPickerView.

Вот код:

.......
#define kMaximumPlayers 15
......
   - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    {
        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
        if (self) 
        {
            self.totalPlayersPossible = [NSMutableArray array];

            for (int x = 2; x < kMaximumPlayers; x++) 
            {
                [_totalPlayersPossible addObject:[NSNumber numberWithInt:x]];
            }
        }
        return self;
    }


    - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
    {
        return [NSString stringWithFormat:@"%@", [self.totalPlayersPossible objectAtIndex:row]];


    - (void)viewDidLoad
    {
        [super viewDidLoad];
        [self.pickverView selectRow:0 inComponent:0 animated:YES];
    }
 }

Когда я запускаю приложение, выбирается первая строка UIPickerView. Проблема в том, что я не могу получить значение этой строки:

   - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
    {
//here I get the value of selected row

       [self setNumberOfSelectedPlayers:[[self.totalPlayersPossible objectAtIndex:row]intValue]];
    }

The value of setNumberOfSelectedPlayers is 0.

Что мне здесь не хватает?

Ответы [ 2 ]

3 голосов
/ 07 марта 2012

Как говорит Новарг, сообщение didSelectRow: не вызывается при загрузке. Вы можете напрямую вызвать сообщение pickerView: titleForRow: inComponent, чтобы в любой момент получить заголовок выбранного в данный момент элемента. Предполагая, что нужный вам заголовок находится в первом «барабане» (компоненте) представления выбора:

NSString *initialTitle = [self pickerView:self.pickerView
                              titleForRow:[self pickerView selectedRowInComponent:0]
                             forComponent:0 
];

Это предполагает, что self служит UIPickerViewDelegate для pickerView, конечно.

1 голос
/ 07 марта 2012

Проблема в том, что в первый раз вы видите, что UIPickerView метод

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component

не вызывается, потому что вы его не выбрали.Этот метод вызывается только тогда, когда вы эффективно выбираете строку (прокрутите и выберите одну из них).

Надеюсь, это поможет

...