2010-12-01 3 views
3

Was ich bisher habe, istMehrere Quellen für UIPickerView auf Textfeld Bearbeitung

@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]; 
} 

in meinem .m und

@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; 

in meinem .h-Datei

Nun werden die Textfelder sind nicht editierbar und ich benötige Hilfe oder Anleitung oder Tutorial, wie man UIPicker mit mehreren Quellen verbindet, die geändert werden können, wenn Textfelder bearbeitet werden

So
+0

In textFieldShouldBeginEditing zu sehen, warum kehren Sie NO für Land und Staatsfelder? – Anna

+0

Entschuldigung ich habe deine Antwort nicht gesehen, ich habe meinen Code korrigiert und unten ist die Arbeitsversion, ich brauche nur eine Sache, um die Tastatur zu verstecken, wenn ich TextField1 drücke :) – Spire

Antwort

8

ich sehe niemand kümmert :)

, was ich jetzt haben, ist 3 Textfelder und wenn ich TextField1 oder TextField2 Picker berühren ändert Werte und es gibt keine Tastatur. Wenn ich die TextField3-Tastatur berühre erscheint und die Auswahl verschwindet.Wenn ich die Tastatur durch Klicken auf Return und dann auf TextFeld1 wähle, erscheint die Auswahl wieder, aber wenn ich die Tastatur nicht durch KLICKEN-TASTE verlasse, bleibt sie über der Auswahl. Was ich brauche, ist, wenn die Tastatur ist firstResponder (und ich sehe es auf dem Bildschirm), es zu verbergen, wenn ich auf dem TextField1 klicken und nur die Picker

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]; 
}