如何为两个文本框创建两个选择器视图?

时间:2013-02-19 14:46:52

标签: ios cocoa-touch

我创建了两个UITextFields,并希望为具有不同值的UIPickerViews创建两个不同的textFields,以及如何将每个textFields映射到每个pickerView特别是? 有什么帮助吗?

3 个答案:

答案 0 :(得分:1)

如何textField.inputview,为您分别选择此选项。

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

如果我在这种情况下编写代码,那么我将创建一个pickerView并为每个pickerview更改datasource而不是创建两个textfield

答案 1 :(得分:0)

首先创建两个包含您想要在差异选择器中显示的值的数组,我们说aray1和ary2。

现在将其添加到.h文件中

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

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

在.h文件中

 - (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";
}

答案 2 :(得分:0)

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

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

UIPickerView委托方法与标签一起使用。