2009-04-20 11 views
21

Voglio creare 2 raccoglitori separati nella stessa vista usando lo stesso viewController. Ma come faccio a impostare delegati separati e origine dati per loro?Multiple PickerViews in una vista?

Non riesco a farlo funzionare. Si presentano con gli stessi dati. Se avete qualche codice di esempio su questo sarà molto apprezzato.

Grazie.

risposta

32

Nota che ogni metodo sia l'origine dati e dei protocolli delegato contiene un parametro UIPickerView *, per esempio:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 

È necessario utilizzare per distinguere tra le due istanze, come segue:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 
{ 

    if([pickerView isEqual: pickerOne]){ 
     // return the appropriate number of components, for instance 
     return 3; 
    } 

    if([pickerView isEqual: pickerTwo]){ 
     // return the appropriate number of components, for instance 
     return 4; 
    } 
} 
+0

questo funziona alla grande, grazie .. unico problema è Ho ricevuto un avviso che dice "avvertimento - il controllo raggiungendo fine della funzione non vuoto:" Sai perché? –

+1

ahh .. Ok, era perché poteva finire per non restituire nulla, quindi ha aggiunto il resto {return 0; } e l'errore è scomparso ... Grazie ancora a tutti e due ... Grande aiuto: D –

+0

come posso assegnare diversi valori di array a questi due UIPIcker diversi – MaheshBabu

15

Il modo più semplice per eseguire questa operazione è utilizzare la proprietà tag del pickerView. Di solito li definisco nell'intestazione per la leggibilità. È possibile impostare il tag in Interface Builder o nel codice.

#define kPickerOne 0 
#define kPickerTwo 1 

Poi, nel file di implementazione ...

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 
{ 
    if(pickerView.tag == kPickerOne) 
    { 
      // do something with picker one 
    } 
    else if(pickerView.tag == kPickerTwo) 
    { 
      // the other picker 
    } 
}