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