2009-04-20 19 views
21

Quiero crear 2 recolectores separados en la misma vista usando el mismo control de vista. ¿Pero cómo configuro delegados y fuentes de datos para ellos?Múltiples PickerViews en una vista?

Parece que no funciona. Aparecen con los mismos datos. Si tiene algún código de muestra, será muy apreciado.

Gracias.

Respuesta

32

Tenga en cuenta que cada método, tanto de la fuente de datos y los protocolos de delegado contiene un parámetro UIPickerView *, por ejemplo:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 

Es necesario utilizarlo para distinguir entre los dos casos, de la siguiente manera:

- (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

esto funciona muy bien, gracias .. El único problema es que reciben un aviso que dice "la advertencia - Control de llegar a final de función no nula" ¿Sabe usted ¿por qué? –

+1

ahh ... Bien, fue porque podría terminar devolviendo nada, así que agregué el resto {return 0; } y el error desapareció ... Gracias de nuevo a los dos. Excelente helt: D –

+0

¿Cómo puedo asignar diferentes valores de matriz a estos dos UIPIckers diferentes? – MaheshBabu

15

La forma más sencilla de hacerlo es utilizar la propiedad tag del selectorView. Normalmente los defino en el encabezado para la legibilidad. Puede configurar la etiqueta en Interface Builder o en el código.

#define kPickerOne 0 
#define kPickerTwo 1 

A continuación, en el archivo de aplicación ...

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