UIPickerView, non può ottenere dati da serie
-
19-09-2019 - |
Domanda
Sto cercando di imparare ad usare l'UIPickerView, e io non so perché mio avviso avviso stampa sempre il primo elemento della matrice (selettore), contro qualsiasi altra cosa. Ho un premere il pulsante definito per il selettore come:
- (IBAction)buttonPressed {
NSInteger row = [myPicker selectedRowInComponent:0];
NSString *s = [myPickerData objectAtIndex:row];
NSLog(@"%@", s);
NSString *title = [[NSString alloc] initWithFormat:@"You selected, %@", s];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title
message:@"Message"
delegate:nil
cancelButtonTitle:@"ok"
otherButtonTitles:nil];
[alert show];
[alert release];
[title release];
}
il mio allineamento definito come:
- (void)viewDidLoad {
[super viewDidLoad];
NSArray *array = [[NSArray alloc] initWithObjects:@"0", @"1", @"2", nil];
self.myPickerData = array;
[array release];
}
annoto le uscite quando il selettore è cambiato, ed i valori si ottiene modificato in 0, 1, 2, di conseguenza.
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
NSLog(@"%@", [myPickerData objectAtIndex:row]);
}
Ma la vista di allarme non funziona mai. Quindi sono sicuro che cosa sto facendo male qui.
Soluzione
Ho il sospetto che vi manca un collegamento nel file pennino, in particolare dalla presa myPicker all'istanza UIPickerView. Se così fosse, myPicker
sarebbe pari a zero, e quindi la linea
NSInteger row = [myPicker selectedRowInComponent:0];
sarebbe sempre impostato fila a 0, il che spiega il motivo per cui si è sempre visualizzando il primo elemento nella matrice.
Oltre a controllare il vostro file nib, è anche possibile confermare questa impostazione di un punto di interruzione nel metodo buttonPressed e controllo per vedere se myPicker è pari a zero.
fare hanno un collegamento dalla presa delegato / dataSource del UIPickerView alla classe di controllo, che è il motivo per cui i vostri metodi delegato sono chiamati. Ma è necessaria una connessione nella direzione opposta per il metodo pulsante per funzionare correttamente.