首页 > 解决方案 > Objective C如何在NSMutableArray中重新添加已删除的项目

问题描述

在我的代码中,三个文本字段用于选择器视图。例如,在第一个文本字段中,用户选择了 A+ 血型,在第二个文本字段中我们不想显示 A+ 血型。其余项目需要显示。文本字段 3 也相同。例如,在文本字段 2 中用户选择 B+ 血型,在文本字段 3 中 B+ 和 A+ 血型需要在数组列表中删除。例如,用户再次选择第一个文本字段并重新选择另一个血型,如 A-ve 组,将 A+ 血型添加到数组列表中。文本字段 2 和文本字段 3 中的内容相同。我已经完成了一项任务,即从数组中删除项目。待处理的任务正在重新添加数组中的项目。

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

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [myPickerView selectRow:0 inComponent:0 animated:YES];
}

- (void)done:(id)sender {
    [myPickerView selectRow:0 inComponent:0 animated:YES]; // On 27/04/2020
    [bloodGroup resignFirstResponder];
    [txtField1 resignFirstResponder];
    [txtField2 resignFirstResponder];
}

标签: iosobjective-c

解决方案


推荐阅读