1

我有一个 UIPickerview。我有一个json响应。我有一个三个文本字段。如果用户选择第一个文本字段显示选择器视图,则用户选择特定项目。第二个和第三个文本字段也一样。我的要求是如果用户在第一个选择器视图中选择特定项目,第二个和第三个选择器视图不显示该项目。第二和第三也一样。

-(void)viewDidLoad
{

dataArray = [[NSMutableArray alloc]initWithObjects:@"A+",@"A-",@"B+",@"B-",@"O+",@"O-", nil];

bloodGroup = [[UITextField alloc]initWithFrame:CGRectMake(10, logoImg.frame.origin.y+logoImg.frame.size.height+45, screenWidth-20, 50)];

bloodGroup.borderStyle = UITextBorderStyleRoundedRect;

bloodGroup.font = [UIFont systemFontOfSize:15];

bloodGroup.placeholder = @"Please Select Your Option";

bloodGroup.delegate = self;

[self.view addSubview:bloodGroup];

txtField1 = [[UITextField alloc]initWithFrame:CGRectMake(10, ansField1.frame.origin.y+ansField1.frame.size.height+45, screenWidth-20, 50)];

txtField1.borderStyle = UITextBorderStyleRoundedRect;

txtField1.font = [UIFont systemFontOfSize:15];

txtField1.placeholder = @"Please Select Your Option";

txtField1.delegate = self;

[self.view addSubview:txtField1];

txtField2 = [[UITextField alloc]initWithFrame:CGRectMake(10, ansField2.frame.origin.y+ansField2.frame.size.height+45, screenWidth-20, 50)];

txtField2.borderStyle = UITextBorderStyleRoundedRect;

txtField2.font = [UIFont systemFontOfSize:15];

txtField2.placeholder = @"Please Select Your Option";

txtField2.delegate = self;

[self.view addSubview:txtField2];

myPickerView = [[UIPickerView alloc] init];

[myPickerView setDataSource: self];

[myPickerView setDelegate: self];

myPickerView.showsSelectionIndicator = YES;

bloodGroup.inputView = myPickerView;

bloodGroup.inputAccessoryView = toolBar;

// txtField1

txtField1.inputView = myPickerView;

txtField1.inputAccessoryView = toolBar;

txtField2.inputView = myPickerView;

txtField2.inputAccessoryView = toolBar;

}

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {

if (isBloodGroupFieldSelected) {

return 1;

}

else if(!isBloodGroupFieldSelected){

return 1;

}

else if(!isGenderGroupFieldSelected)

{

return 1;

}

return 0;

}

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{

if (isBloodGroupFieldSelected) {

return [dataArray count];

}

else if(!isBloodGroupFieldSelected)

{

return [dataArray count];

}

else if (!isGenderGroupFieldSelected)

{

return [dataArray count];

}

return 0;

}

-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {

if (isBloodGroupFieldSelected)

{

return dataArray[row];

}

else if((!isBloodGroupFieldSelected) && (isGenderGroupFieldSelected))

{

return dataArray[row];

}

else if(!isGenderGroupFieldSelected)

{

return dataArray[row];

}

return 0;

}

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

if (isBloodGroupFieldSelected) {

bloodGroup.text = dataArray[row];

}

else if((!isBloodGroupFieldSelected) && (isGenderGroupFieldSelected))

{

txtField1.text = dataArray[row];

}

else if(!isGenderGroupFieldSelected)

{

txtField2.text= dataArray[row];

}

}

- (void)textFieldDidBeginEditing:(UITextField *)textField {

if (textField == bloodGroup) {

isBloodGroupFieldSelected = YES;

}

else if (textField == txtField1){

isBloodGroupFieldSelected = NO;

isGenderGroupFieldSelected = YES;

}

else if (textField == txtField2) {

isGenderGroupFieldSelected = NO;

isBloodGroupFieldSelected = NO;

}

[myPickerView reloadAllComponents];

}
4

1 回答 1

0

-(无效)viewDidLoad {

dataArray = [[NSMutableArray alloc]initWithObjects:@"A+",@"A-",@"B+",@"B-",@"O+",@"O-", nil];

bloodGroup = [[UITextField alloc]initWithFrame:CGRectMake(10, logoImg.frame.origin.y+logoImg.frame.size.height+45, screenWidth-20, 50)];

bloodGroup.borderStyle = UITextBorderStyleRoundedRect;

bloodGroup.font = [UIFont systemFontOfSize:15];

bloodGroup.placeholder = @"请选择您的选项";

bloodGroup.delegate = 自我;

[self.view addSubview:bloodGroup];

txtField1 = [[UITextField alloc]initWithFrame:CGRectMake(10, ansField1.frame.origin.y+ansField1.frame.size.height+45, screenWidth-20, 50)];

txtField1.borderStyle = UITextBorderStyleRoundedRect;

txtField1.font = [UIFont systemFontOfSize:15];

txtField1.placeholder = @"请选择您的选项";

txtField1.delegate = self;

[self.view addSubview:txtField1];

txtField2 = [[UITextField alloc]initWithFrame:CGRectMake(10, ansField2.frame.origin.y+ansField2.frame.size.height+45, screenWidth-20, 50)];

txtField2.borderStyle = UITextBorderStyleRoundedRect;

txtField2.font = [UIFont systemFontOfSize:15];

txtField2.placeholder = @"请选择您的选项";

txtField2.delegate = self;

[self.view addSubview:txtField2];

myPickerView = [[UIPickerView alloc] init];

[myPickerView setDataSource: self];

[myPickerView setDelegate: self];

myPickerView.showsSelectionIndicator = 是;

bloodGroup.inputView = myPickerView;

bloodGroup.inputAccessoryView = 工具栏;

// txtField1

txtField1.inputView = myPickerView;

txtField1.inputAccessoryView = 工具栏;

txtField2.inputView = myPickerView;

txtField2.inputAccessoryView = 工具栏;

}

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {

if (isBloodGroupFieldSelected) {

返回 1;

}

否则如果(!isBloodGroupFieldSelected){

返回 1;

}

否则如果(!isGenderGroupFieldSelected)

{

返回 1;

}

返回0;

}

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {

if (isBloodGroupFieldSelected) {

返回[数据数组计数];

}

否则如果(!isBloodGroupFieldSelected)

{

返回[数据数组计数];

}

否则如果(!isGenderGroupFieldSelected)

{

返回[数据数组计数];

}

返回0;

}

-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {

if (isBloodGroupFieldSelected)

{

返回数据数组[行];

}

否则 if((!isBloodGroupFieldSelected) && (isGenderGroupFieldSelected))

{

返回数据数组[行];

}

否则如果(!isGenderGroupFieldSelected)

{

返回数据数组[行];

}

返回0;

}

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

if (isBloodGroupFieldSelected) {

bloodGroup.text = dataArray[行];

}

否则 if((!isBloodGroupFieldSelected) && (isGenderGroupFieldSelected))

{

txtField1.text = dataArray[row];

}

否则如果(!isGenderGroupFieldSelected)

{

txtField2.text=dataArray[row];

}

}

  • (void)textFieldDidBeginEditing:(UITextField *)textField {

if (textField == bloodGroup) {

isBloodGroupFieldSelected = YES;

}

否则 if (textField == txtField1){

isBloodGroupFieldSelected = 否;

isGenderGroupFieldSelected = YES;

}

否则 if (textField == txtField2) {

isGenderGroupFieldSelected = 否;

isBloodGroupFieldSelected = 否;

}

[myPickerView 重新加载所有组件];

}

  • (void)textFieldDidBeginEditing:(UITextField *)textField {

if (textField == bloodGroup) {

isBloodGroupFieldSelected = YES;

}else if (textField == txtField1){

isBloodGroupFieldSelected = 否;

isGenderGroupFieldSelected = YES;

}

否则 if (textField == txtField2){

isGenderGroupFieldSelected = 否;

isBloodGroupFieldSelected = 否;

}

[myPickerView 重新加载所有组件];

}

  • (void)viewWillAppear:(BOOL)动画{

[超级viewWillAppear:动画];

[myPickerView selectRow:0 inComponent:0 动画:YES];

}

-(无效)完成:(id)发件人

{

[myPickerView selectRow:0 inComponent:0 动画:YES]; // 2020 年 4 月 27 日

[血组辞职FirstResponder];

[txtField1 resignFirstResponder];

[txtField2 resignFirstResponder];

}

于 2020-04-27T17:12:20.543 回答