2013-02-19 3 views

답변

0

최초의 datasource을 변경 만듭니다는 다른 값을 포함하는 두 배열을 만들 diff picker에 표시하고자하는 내용을 aray1과 ary2라고합니다.

지금 태그 대리자 메서드

- (void)viewDidLoad 

     { 
      [super viewDidLoad]; 
      firstTF.delegate = self; 
      secondTF.delegate = self; 
      ary1 =[NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8", nil]; 
      ary2 =[NSArray arrayWithObjects:@"a",@"s",@"d",@"f",@"g",@"h",@"x",@"c", nil]; 
     } 

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ 

     if (textField == firstTF) { 
      txtFieldSelected = @"firstTF"; 
     }else if (textField == secondFF) { 
      txtFieldSelected = @"secondTF"; 
     } 
     CGRect pickerFrame = CGRectMake(0, 40, 0, 0); 

     pickerView = [[UIPickerView alloc] initWithFrame:pickerFrame]; 
     pickerView.showsSelectionIndicator = YES; 
     pickerView.dataSource = self; 
     pickerView.delegate = self; 

     keyboardDoneButtonView = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; 
     keyboardDoneButtonView.barStyle  = UIBarStyleBlackTranslucent; 
     [keyboardDoneButtonView sizeToFit]; 

     NSMutableArray *barItems = [[NSMutableArray alloc] init]; 

     UIBarButtonItem *cancelBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelButtonPressed:)]; 
     [barItems addObject:cancelBtn]; 

     UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil]; 
     [barItems addObject:flexSpace]; 

     UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneButtonPressed:)]; 
     [barItems addObject:doneBtn]; 


     [keyboardDoneButtonView setItems:barItems animated:YES]; 
     textField.inputAccessoryView = keyboardDoneButtonView; 

     textField.inputView = pickerView; 


    return YES; 
} 


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


- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component; 
{ 
    if (txtFieldSelected == @"firstTF") { 
     return ary1.count; 
    }else if (txtFieldSelected == @"secondTF") { 
     return ary2.count; 
    } 
    return 1; 

} 

-(void)doneButtonPressed:(id)sender{ 
    if (txtFieldSelected == @"firstTF") { 
     [firstTF resignFirstResponder]; 

    }else if (txtFieldSelected == @"secondTF") { 

     [secondTF resignFirstResponder]; 
    } 
} 

-(void)cancelButtonPressed:(id)sender{ 

    if (txtFieldSelected == @"firstTF") { 
     [firstTF resignFirstResponder]; 

    }else if (txtFieldSelected == @"secondTF") { 
     [secondTF resignFirstResponder]; 

    } 
} 


- (void)pickerView:(UIPickerView *)pickerView didSelectRow: (NSInteger)row inComponent:(NSInteger)component { 
    // called when a row is selected 

    if (txtFieldSelected == @"firstTF") { 

     firstTF.text = [ary1 objectAtIndex:row]; 
    }else if (txtFieldSelected == @"secondTF") { 
     secondTF.text = [ary2 objectAtIndex:row]; 

    } 

} 

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { 
    if (txtFieldSelected == @"firstTF") { 
     return [ary1 objectAtIndex:row]; 
    }else if (txtFieldSelected == @"secondTF") { 
     return [ary2 objectAtIndex:row]; 
    } 

    return @"Good Day"; 
} 
1

textField.inputview에 대해 각각 이와 같은 옵션을 선택하십시오.

textField.inputView = pickerView1; 
textField1.inputView = pickerView2; 

내가 두 pickerView을 만드는 대신 다음이 상황에서 코드를 작성하는 경우, 내가 한 pickerview 및 모든 각 textfield

0
textField1.inputView = pickerView1; 
    textField2.inputView = pickerView2; 

    pickerView.tag = 1; 
    pickerView.tag = 2; 

사용 UIPickerView .H 파일

@interface YourViewController : UIViewController<UITextFieldDelegate,UIPickerViewDelegate, UIPickerViewDataSource> 
    { 

     UIToolbar* keyboardDoneButtonView; 
     UIPickerView *pickerView; 
     NSString * txtFieldSelected; 
     NSArray *ary2; 
     NSArray *ary1; 
    } 

과 .H 파일이 추가.

관련 문제