Один UIPickerView с несколькими текстовыми полями - PullRequest
1 голос
/ 12 апреля 2011

Могу ли я использовать один UIPickerView со многими UITextFields или мне нужно создать много видов сборщиков, по одному для каждого UITextField (у меня все UITextFields в одном представлении)?

Ответы [ 4 ]

4 голосов
/ 31 августа 2012
-(void)textFieldDidBeginEditing:(UITextField *)textField
{
    if (textField1.editing == YES)
    {
        textFieldName=textField1;
    }
    else
        if (textField2.editing == YES)
        {
            textFieldName=textField2;
        }
}
3 голосов
/ 31 августа 2012

Используйте представление списка Array, а затем получите позицию.

2 голосов
/ 31 августа 2012

Пожалуйста, объявите это textFieldName глобально:

NSString * textFieldName;

Распределение в 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];
}

Пожалуйста, укажите имя текстового поля в строке textFieldName:

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

Тогдаиспользуйте это textFieldName для проверки в методе выбора:

- (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];
    }
0 голосов
/ 12 апреля 2011

Я думаю, что одного представления Picker с несколькими текстовыми полями будет достаточно.Вы можете легко пометить текстовые поля и обработать их в соответствии с вашими потребностями.

Несколько источников для UIPickerView при редактировании текстового поля

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

Поможетвы начали

...