2012-03-06 2 views
0

Я не могу получить начальное значение от UIPickerView.Получить значение от 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. 

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

+1

Где вы получаете «значение выбранной строки? – vipinagg

+0

Что вы имеете в виду, где я получаю значение? – OhDoh

+0

Я не вижу код, в котором вы «получаете» значение для выбранной строки. – vipinagg

ответ

1

Проблема заключается в том, что первый раз, когда вы видите, что UIPickerView метод

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

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

Надеется, что это помогает

3

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

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

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

Смежные вопросы