开发者

One UIPickerView with multiple textfields

Can I use one UIPickerView with many UITextFields, or should I create many pickerviews, one for each UITextField (I have all the UITextFi开发者_运维问答elds in the same view)?


-(void)textFieldDidBeginEditing:(UITextField *)textField
{
    if (textField1.editing == YES)
    {
        textFieldName=textField1;
    }
    else
        if (textField2.editing == YES)
        {
            textFieldName=textField2;
        }
}


Use the Array list view and then get the position.


Please declare this textFieldName globally:

NSString * textFieldName;

Allocation in didLoad:

- (void)viewDidLoad
{
    [super viewDidLoad];
    [pickerView setHidden:YES];

    textFieldName=[NSString alloc]init];

    pickerArray1 = [[NSMutableArray alloc] initWithObjects:@"apple", @"mango", @"banana", nil];

    pickerArray2 = [[NSMutableArray alloc] initWithObjects:@"black", @"white", @"green", nil];
}

Please set text field name in textFieldName string:

-(void)textFieldDidBeginEditing:(UITextField *)textField{
    [pickerView setHidden:YES];
    if (textField1.editing == YES)
    {
        textFieldName=textField1;
        [pickerView setHidden:NO];
    }
    else
        if (textField2.editing == YES)
        {
            textFieldName=textField2;
            [pickerView setHidden:NO];
        }
    }

Then use this textFieldName to check in the pickerview method:

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

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component;
{
    if (textFieldName isEqualToString:@"textField1")
    {
        return [pickerArray1 count];
    }
    else
        if (textFieldName isEqualToString:@"textField2")
        {
            return [pickerArray2 count];
        }
    }

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component;
{
    if (textFieldName isEqualToString:@"textField1")
    {
        return [pickerArray1 objectAtIndex:row];
    }
    else
        if (textFieldName isEqualToString:@"textField2")
        {
            return [pickerArray2 objectAtIndex:row];
        }
    }

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    if (textFieldName isEqualToString:@"textField1")
    {
        textField1.text= [pickerArray1 addObjectAtIndex:row];
    }
    else
        if (textFieldName isEqualToString:@"textField2")
        {
            textField2.text= [pickerArray2 addObjectAtIndex:row];
        }
        [pickerView setHidden:YES];
    }


I think one Picker view with multiple textfields would be enough. You can easily tag the textfields and process them according to your needs.

Multiple sources for UIPickerView on textfield editing

http://www.iphonedevsdk.com/forum/iphone-sdk-tutorials/12952-tutorial-uipickerview-basics-basic-tip-calculator.html

Will help you get started

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜