如果用户点击UIPickerview,如何在UITextField中显示血型



祝所有iOS开发者新年快乐。我想在UITextfield中显示血型。所以我应该拿UIPickerview并附上血型列表。我的要求是,如果用户点击UITextfiled将显示UIPickerview,用户选择血型,它将反映UITextfield中的血型项目。我正在尝试使用此功能。但是我在UITextfield中显示血型值时遇到了一些问题。问题是,例如,如果我单击 A-ve 血型,这将按 UITextfield 显示。但是,如果我单击 A+ve 组,它将显示为 A ve 而不是 UITextfield中的 A+ve .这是我的问题。任何身体请帮助我。提前谢谢。

下面给出的是我的代码。

//Bloodgroupviewcontroller.m
arrChooseServices=[[NSMutableArray alloc]initWithObjects:@"A+ve",@"A-ve",@"B+ve",@"B-ve",@"AB+ve",@"AB-ve",@"O+ve",@"O-ve", nil];
bloodGroup=[[UITextField alloc]initWithFrame:CGRectMake(150, 200, 120, 20)];
bloodGroup.borderStyle=UITextBorderStyleRoundedRect;
bloodGroup.backgroundColor=[UIColor clearColor];
bloodGroup.backgroundColor=[UIColor colorWithRed:0.662745 green:0.662745 blue:0.662745 alpha:0.5];
[bloodGroup setUserInteractionEnabled:NO];
bloodGroup.font=[UIFont systemFontOfSize:14.0];
bloodGroup.contentVerticalAlignment=UIControlContentVerticalAlignmentCenter;
bloodGroup.textAlignment=NSTextAlignmentCenter;
bloodGroup.delegate=self;
bloodGroup.inputView=self.chooseServicePicker;
bloodGroup.inputAccessoryView=self.accessoryView;
[self.view addSubview:bloodGroup];

-(UIPickerView *)chooseServicePicker
{
   if(chooseServicePicker==nil)
   {
       chooseServicePicker=[[UIPickerView alloc]init];
       chooseServicePicker.delegate=self;
       chooseServicePicker.dataSource=self;
       chooseServicePicker.showsSelectionIndicator=YES;
     }
     return chooseServicePicker;
 }

 -(UIToolbar *)accessoryView
 {
      if ( accessoryView == nil )
      {
            accessoryView = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 30)];
             UIBarButtonItem *doneButton = [[UIBarButtonItem alloc]  initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(onBloodGroupSelection)];
             UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancel)];
             accessoryView.items=[NSArray arrayWithObjects:doneButton,cancelButton, nil];
                 }
           return accessoryView;
      }

- (void)onBloodGroupSelection
{
    NSInteger row = [self.chooseServicePicker selectedRowInComponent:0];
    bloodGroup.text=[arrChooseServices objectAtIndex:row];
    [bloodGroup resignFirstResponder];
 }

关于不显示+,我测试了您的代码,它对我来说工作正常。我不得不将[bloodGroup setUserInteractionEnabled:NO];更改为[bloodGroup setUserInteractionEnabled:YES];以使UITextField可点击。不过,请尝试添加

- (void)pickerView:(UIPickerView *)pickerView didSelectRow: (NSInteger)row inComponent:(NSInteger)component{
     bloodGroup.text = [arrChooseServices objectAtIndex:row] ;
}

以在点击UIPickerView时使UITextField更改文本。

试试这个,将此方法和其他委托方法添加到类中

- (void)pickerView:(UIPickerView *)pickerView didSelectRow: (NSInteger)row inComponent:(NSInteger)component
{
    yourtextfield.text = [yourdataarray objectAtIndex:row] ;
}
Take a string globally as "selectedString"
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{      
 selectedString = yourdataarray[row];                                                                  
}
-(void)onBloodGroupSelection
 {
 bloodGroup.text= selectedString;
 [self.view endEditing:YES];
 }

最新更新