2012-09-06 13 views
6

`Estoy creando un UIPickerView que está llegando, pero no está tomando los datos de la matriz ya que no se invocan los métodos de delegado. Configuré UIPickerviewdelegate y datasource, pero todavía no funciona. ¿Cuál puede ser el motivo para no llamar a los métodos de delegado? Si alguien sabe al respecto, por favor dígame. Gracias de antemano.¿por qué no se invocan los métodos de delegado de UIPickerView incluso después de establecer los protocolos de delegado?

picker.delegate=self; 
picker.dataSource=self; 



arrayOfState = [[NSMutableArray alloc] init]; 
[self.arrayOfState addObject:@"Assam"]; 
[arrayOfState addObject:@"Andhra Pradesh"]; 
[arrayOfState addObject:@"Madhya Pradesh"]; 
[arrayOfState addObject:@"West Bengal"]; 
[self.arrayOfState addObject:@"Orissa"];  
[self.arrayOfState addObject:@"Meghalaya"]; 
[arrayOfState addObject:@"Tripura"]; 
[arrayOfState addObject:@"Arunachal Pradesh"]; 
[arrayOfState addObject:@"Jammu and Kashmir"]; 

picker=[[UIPickerView alloc] initWithFrame:CGRectMake(0.0f,100.0f,40.0f,120.0f)]; 
picker.showsSelectionIndicator=YES; 
+0

publicar las partes específicas del código en cuestión. De lo contrario, nadie podrá ofrecer mucha ayuda. –

+0

después de eso, he implementado los métodos de delegado como ... number offponentsInPickerView, didselectrow, numberofRowsinComponent, etc. ... pero no se invocan en mi aplicación ... – user1523344

+0

@ user1523344, ¿Cómo se ha agregado UIPickerView? ¿Se agregó en 'IB' o lo creó programáticamente? – Hemang

Respuesta

6

probar esto,

- (void)viewDidLoad 
{ 

    [super viewDidLoad]; 
arrayOfState = [[NSMutableArray alloc] init]; 
[self.arrayOfState addObject:@"Assam"]; 
[arrayOfState addObject:@"Andhra Pradesh"]; 
[arrayOfState addObject:@"Madhya Pradesh"]; 
[arrayOfState addObject:@"West Bengal"]; 
[self.arrayOfState addObject:@"Orissa"];  
[self.arrayOfState addObject:@"Meghalaya"]; 
[arrayOfState addObject:@"Tripura"]; 
[arrayOfState addObject:@"Arunachal Pradesh"]; 
[arrayOfState addObject:@"Jammu and Kashmir"]; 

picker=[[UIPickerView alloc] initWithFrame:CGRectMake(0.0f,100.0f,40.0f,120.0f)]; 
picker.delegate=self; 
picker.dataSource=self; 
picker.showsSelectionIndicator=YES; 
[self.view addSubView:picker]; 
} 

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{ 
    return 1; 
} 

// Total rows in our component. 
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component 
{ 
    return [arrayOfState count]; 
} 
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { 

     NSString *title; 
     title=[arrayOfState objectAtIndex:row]; 
     return title; 
    } 


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

lo general, cuando hay un método delegado que no se conoce que hay tres razones para esto:

  1. no ha definido una clase para ser el delegado. Parece que lo hizo PERO configurar su delegado antes de asignar memoria para el objeto selector parece mágico para mí.

  2. No implementó los métodos de delegado en la clase que se ajustará al protocolo de delegado.

  3. No estableció su clase que cumpla con el protocolo delegado (lo que significa que no escribir algo como esto

@interface yourClass : whateverurclassheritfrom <UIPickerViewDelegate>

1

Add objects to array before calling below code

picker=[[UIPickerView alloc] initWithFrame:CGRectMake(0.0f,100.0f,40.0f,120.0f)]; 
picker.delegate=self; 
picker.dataSource=self; 
picker.showsSelectionIndicator=YES; 
[self.view addSubView:picker]; 

El problema fue eso, configurando delegate y datasource antes de allocatingpicker.

Cuestiones relacionadas