2010-12-01 36 views
3

Ce que j'est jusqu'à présentsources multiples pour UIPickerView sur textfield édition

@synthesize txtCountry,txtState; 
int flgTextField; 
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    [pickerView reloadAllComponents]; 

    // Make a new view, or do what you want here 
    if(textField == txtCountry || textField == txtState){ 
     flgTextField = textField.tag; 
     [UIView beginAnimations:nil context:NULL]; 
     //[pvState setFrame:CGRectMake(0.0f, 199.0f, 320.0f, 216.0f)]; 
     [UIView commitAnimations]; 
     return NO; 
    } 
    else { 
     return YES; 
    } 

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

- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component { 

    if(flgTextField==1){ 
     return [arryCountry count]; 
    } 
    else { 
     return [arryState count]; 
    } 

} 

- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { 

    if(flgTextField==1){ 
     return [arryCountry objectAtIndex:row]; 
    } 
    else{ 
     return [arryState objectAtIndex:row]; 
    } 

} 

- (void)viewDidLoad { 
    arryCountry = [[NSMutableArray alloc] init]; 
    arryState = [[NSMutableArray alloc] init]; 
    [arryCountry addObject:@" 100 "]; 
    [arryCountry addObject:@" 200 "]; 
    [arryCountry addObject:@" 400 "]; 
    [arryCountry addObject:@" 600 "]; 
    [arryCountry addObject:@" 1000 "]; 
    [arryState addObject:@" a "]; 
    [arryState addObject:@" b "]; 
    [arryState addObject:@" c "]; 
    [arryState addObject:@" d "]; 
    [arryState addObject:@" e "]; 
     [super viewDidLoad]; 
} 

dans mon .m et

@interface Contact : UIViewController <UIPickerViewDelegate, UIPickerViewDataSource> { 

    IBOutlet UITextField *txtCountry; 
    IBOutlet UITextField *txtState; 
    NSMutableArray *arryCountry; 
    NSMutableArray *arryState; 
    UIPickerView *pickerView; 
} 
@property(nonatomic,retain) IBOutlet UITextField *txtCountry; 
@property(nonatomic,retain) IBOutlet UITextField *txtState; 

dans mon fichier .h

Maintenant, les champs de texte sont pas éditable et j'ai besoin d'aide ou de conseils, ou tout tutoriel sur la façon de se connecter UIPicker avec plusieurs sources qui peuvent être modifiées lorsque les champs de texte sont en cours d'édition

+0

En textFieldShouldBeginEditing, pourquoi ne vous retournez PAS pour le pays et champs d'état? – Anna

+0

désolé je n'ai pas vu votre réponse, j'ai corrigé mon code et ci-dessous est la version de travail, je n'ai besoin d'une chose, pour cacher le clavier quand j'appuie sur textField1 :) – Spire

Répondre

8

donc je ne vois personne prend soin :)

ce que j'ai maintenant 3 TextField et chaque fois que je touche TextField1 ou TextField2 Picker modifie les valeurs et il n'y a pas de clavier. Lorsque je touche le clavier textField3 apparaît et le sélecteur est masqué.Maintenant, si je rejette le clavier en cliquant sur retour, puis cliquez sur textField1 picker apparaît à nouveau, mais si je ne rejette pas le clavier en cliquant sur le bouton, il reste sur le sélecteur. Ce que j'ai besoin est lorsque le clavier est firstResponder (et je vois sur l'écran) pour le cacher si je clique sur le TextField1 et seulement de voir le sélecteur

int variabla; 

     -(void)textFieldDidBeginEditing:(UITextField *)textField{ 
      [pickerView setHidden:YES]; 
      if (textField1.editing == YES) { 
       [textField1 resignFirstResponder]; 
       [pickerView setHidden:NO]; 
       variabla = 1; 
      }else if (textField2.editing == YES) { 
       [textField2 resignFirstResponder]; 
       [pickerView setHidden:NO]; 
       variabla = 2; 
      } 
      NSLog(@"variabla %d",variabla); 
      [pickerView reloadAllComponents]; 
     } 

     - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView; 
     { 
      return 1; 
     } 
     - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component; 
     { 
      if (variabla == 1) { 
       return [pickerArray1 count]; 
      }else if (variabla == 2) { 
       return [pickerArray2 count]; 
      }else { 
       return 0; 
      } 
     } 
     - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component; 
     { 
      if (variabla == 1) { 
       return [pickerArray1 objectAtIndex:row];   
      }else if (variabla == 2) { 
       return [pickerArray2 objectAtIndex:row]; 
      }else { 
       return 0; 
      } 
     } 
     - (void)textFieldShouldReturn:(UITextField *)textField{ 
      [textField resignFirstResponder]; 
     } 
- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [pickerView setHidden:YES]; 
    pickerArray1 = [[NSMutableArray alloc] initWithObjects:@"0", @"1", @"2", nil]; 
    pickerArray2 = [[NSMutableArray alloc] initWithObjects:@"3", @"4", @"5", nil]; 
}