Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IOS中具有单个选择器视图的多个文本字段_Ios_Tags_Uipickerview - Fatal编程技术网

IOS中具有单个选择器视图的多个文本字段

IOS中具有单个选择器视图的多个文本字段,ios,tags,uipickerview,Ios,Tags,Uipickerview,我是IOS新手,我想用一个选择器创建多个文本字段。假设我需要五个textfield意味着如果我单击第一个textfield picker view可以加载第一个数组,那么我转到第二个textfield意味着picker view可以自动加载第二个数组并一直加载到最后一个字段和数组。请根据我的问题给我一些想法和建议 也许这会对你有所帮助 我在我的项目中使用了相同的代码,并且它工作正常。这里我给你三个文本字段的代码 NSMutableArray *pickerTitleData, *pick

我是IOS新手,我想用一个选择器创建多个文本字段。假设我需要五个textfield意味着如果我单击第一个textfield picker view可以加载第一个数组,那么我转到第二个textfield意味着picker view可以自动加载第二个数组并一直加载到最后一个字段和数组。请根据我的问题给我一些想法和建议

也许这会对你有所帮助

我在我的项目中使用了相同的代码,并且它工作正常。这里我给你三个文本字段的代码

    NSMutableArray *pickerTitleData, *pickerCityData, *pickerStateData;
@property (strong, nonatomic) IBOutlet UItextfield *txtTitle;
@property (strong, nonatomic) IBOutlet UItextfield *txtTitle;
@property (strong, nonatomic) IBOutlet UItextfield *txtTitle;
    UIPickerView *TitleSelect,*CitySelect, *StateSelect;




for address type
        pickerTitleData =[[NSMutableArray alloc]initWithObjects:@"Home",@"Office",@"Other", nil];

        TitleSelect = [[UIPickerView alloc]init];
        TitleSelect.dataSource = self;
        TitleSelect.delegate = self;
        TitleSelect.showsSelectionIndicator = YES;
        txtTitle.inputView = TitleSelect;

// same you have three other array


#pragma mark - Picker View Data source for city

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    @try
    {
        if (pickerView == TitleSelect)
        {
            return pickerTitleData.count;
        }

        else if (pickerView == CitySelect)
        {
            return pickerCityData.count;
        }

        else if (pickerView == StateSelect)
        {
            return pickerStateData.count;
        }

        return 1;
    }
    @catch (NSException *exception)
    {
        NSLog(@"exception--%@",exception.description);
    }
}

#pragma mark- Picker View Delegate for city

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    @try
    {
        if (pickerView == TitleSelect)
        {
            [txtTitle setText:[pickerTitleData objectAtIndex:row]];
        }

        else if (pickerView == CitySelect)
        {
            [txtTownOrCity setText:[pickerCityData objectAtIndex:row]];
        }

        else if (pickerView == StateSelect)
        {
            [txtState setText:[pickerStateData objectAtIndex:row]];
        }
    }
    @catch (NSException *exception)
    {
        NSLog(@"%@",exception.description);
    }
}

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    @try
    {
        if (pickerView == TitleSelect)
        {
            return pickerTitleData[row];
        }

        else if (pickerView == CitySelect)
        {
            return pickerCityData[row];
        }

        else if (pickerView == StateSelect)
        {
            return pickerStateData[row];
        }

        return @"";

    }
    @catch (NSException *exception)
    {
        NSLog(@"%@",exception.description);
    }
}

按照以下步骤实现您的目标

  • 从给定链接下载以下通用类:

  • 将此类复制到项目中,并将“LabeledPickerView.h”导入到ViewController.h文件中。另外,添加uipickerewdatasourceUIPickerDelegateuiextfielddelegate

  • 现在,使用以下方法初始化选择器:-

    -(LabeledPickerView *)GetPickerViewWithTag:(int)Tag {
    
       LabeledPickerView *pickerView = [[LabeledPickerView alloc] init];
    
       pickerView.dataSource = self;
    
       pickerView.delegate = self;
    
       pickerView.tag = Tag;
    
       pickerView.backgroundColor = [UIColor whiteColor];
    
       pickerView.showsSelectionIndicator = YES;
    
       return pickerView;
    
    }
    
    此方法将返回PickerView的属性

  • 现在,我们将使用UIPickerView委托和数据源方法向其中添加数据,如下所示:-

    //Based on the text fields tags, you can populate the data in PickerView.
    -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
    
         return 1;     //Returns components in PickerView. Change with switch - case statement if you want more components in any of the text fields.
    }
    
    -(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {     
    
        int tag = (int)((UIPickerView *)pickerView).tag;
        switch (tag) {
              case 10: {
                 if (YourArray.count > 0) {
                     return [YourArray count];
                 }
                 else {
                     return 0;
                 }
                 break;
              }
              default:
              break;
        }
        return 0;
    }
    
    -(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
    
        int tag = (int)((UIPickerView *)pickerView).tag;
        switch (tag) {
              case 10: {
                if ([YourArray count] > 0) {
                    return [YourArray objectAtIndex:row];
                }
                else {
                    return @"";
                }
                break;
             }
             default:
             break;
         }
         return @"";
     }
    
    -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
    
          int tag = (int)((UIPickerView *)pickerView).tag;
          switch (tag) {
                case 10: {
                    if ([YourArray count] > 0) {
                      YourTextField.text = [YourArray objectAtIndex:row];
                }
                else {
                      txtCity.text = @"";
                }
                break;
          }
          default:
          break;
       }
     }
    
  • 现在,开始编辑时打开选择器,如下所示:

    -(void)textFieldDidBeginEditing:(UITextField *)textField {
        if (textField == firstTextField) {
            LabeledPickerView *picker = [self GetPickerViewWithTag:10];  //Change tag as text field changes..
            textField.inputView = picker;  
            [picker selectRow:0 inComponent:0 animated:YES];
            [self pickerView:picker didSelectRow:0 inComponent:0];
         }
    }
    
  • 在此方法中,添加尽可能多的文本字段。不要忘记为每个文本字段指定不同的标记

    通过使用上述代码,您可以将单个选择器视图与多个文本字段一起使用


    快乐的编码

    请看一下执行Textfield委托并更改选择器数组重新加载选择器视图解决您的问题任何详细信息编码@PKTyesterday我回答了您的问题不工作不工作@Anbu.Karthiki在您的编码中有一个DOUTH为什么所有Textfield名称相同@PALAK iOS DeveloperI对代码做了一些小改动。请尝试使用此更新的代码。