在tableview中管理多个textview

时间:2016-06-25 22:33:25

标签: objective-c xcode textview tableview

我有一个tableview,需要三个textview进行描述。我制作了一个包含带有标签1000的文本视图的原型单元格。 我想重复使用这个textview,但是当我滚动时,textview的文本会发生变化。

有一段时间法拉兹采取haider textview的位置,有时zaidi采取faraz的位置。

我尝试给他们独特的标签,但它仍然没有帮助我。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *cellViewIdentifier = nil;
long section = indexPath.section;
UITableViewCell *cell;

if(section == kSocialStatusSection) {
    if(indexPath.row < socialResult.socialStatus.count){
        cellViewIdentifier = kCheckBoxItemCellViewIdentifier;
        cellViewIdentifier = [cellViewIdentifier stringByAppendingString:langAppendString];
        cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:cellViewIdentifier];
        [cell setBackgroundColor:[UIColor clearColor]];

        SocialStatus *  socialStatus = [socialResult.socialStatus objectAtIndex:indexPath.row];

                    [cell setBackgroundColor:[UIColor clearColor]];
        UILabel *titleLabel = (UILabel *) [cell viewWithTag:kTagTitleCellLabel];

        //            NSMutableDictionary *obj = [socialStatusArray objectAtIndex:indexPath.row];
        [titleLabel setText:[LanguageUtilities isEnglishLanguage]?socialStatus.typeNameEn:socialStatus.typeNameAr];
        UIButton *checkBox = (UIButton *) [cell viewWithTag:kTagCheckButton];

        //            checkBox.selected = NO;
        if([socialStatus.selected boolValue]) {
            checkBox.selected = YES;
        }
        else{
            checkBox.selected = NO;
        }

    } else {
        cellViewIdentifier = kDescriptionCellViewIdentifier;
        cellViewIdentifier = [cellViewIdentifier stringByAppendingString:langAppendString];

        cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:cellViewIdentifier];

                    [cell setBackgroundColor:[UIColor clearColor]];


        GCPlaceholderTextView *textArea = (GCPlaceholderTextView *)[cell viewWithTag:kTagDescriptionTextArea];
            textArea.placeholder =getLocalizedString(@"Description");

        textArea.delegate = self;
            textArea.text = @"FARAZ";



    }
}
else if(section == kSocialStatusProblems){
    if(indexPath.row < socialResult.socialProblems.count){
        cellViewIdentifier = kCheckBoxItemCellViewIdentifier;
        cellViewIdentifier = [cellViewIdentifier stringByAppendingString:langAppendString];
        cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:cellViewIdentifier];


                    [cell setBackgroundColor:[UIColor clearColor]];

        SocialProblem * socialProblem = [socialResult.socialProblems objectAtIndex:indexPath.row];


        UILabel *titleLabel = (UILabel *) [cell viewWithTag:kTagTitleCellLabel];

        //            NSMutableDictionary *obj = [socialProblemsArray objectAtIndex:indexPath.row];
        [titleLabel setText:[LanguageUtilities isEnglishLanguage]?socialProblem.typeNameEn:socialProblem.typeNameAr];

        UIButton *checkBox = (UIButton *) [cell viewWithTag:kTagCheckButton];

        if([socialProblem.selected boolValue]) {
            checkBox.selected = YES;
        }else{
            checkBox.selected = NO;
        }

    } else {
        cellViewIdentifier = kDescriptionCellViewIdentifier;
        cellViewIdentifier = [cellViewIdentifier stringByAppendingString:langAppendString];

        cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:cellViewIdentifier];

                    [cell setBackgroundColor:[UIColor clearColor]];

        GCPlaceholderTextView *textArea =  (GCPlaceholderTextView *)[cell viewWithTag:kTagDescriptionTextArea];


        textArea.placeholder =getLocalizedString(@"Description");
        textArea.delegate = self;
            textArea.text = @"Haider";



    }
}
else if(section == kProblemTypesSection){
    if(indexPath.row < socialResult.socialProblemsTypes.count){
        cellViewIdentifier = kCheckBoxItemCellViewIdentifier;
        cellViewIdentifier = [cellViewIdentifier stringByAppendingString:langAppendString];
        cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:cellViewIdentifier];


                    [cell setBackgroundColor:[UIColor clearColor]];

        SocialProblemsType * socialProblemType = [socialResult.socialProblemsTypes objectAtIndex:indexPath.row];


        UILabel *titleLabel = (UILabel *) [cell viewWithTag:kTagTitleCellLabel];

        //            NSMutableDictionary *obj = [problemTypeArray objectAtIndex:indexPath.row];
        [titleLabel setText:[LanguageUtilities isEnglishLanguage]?socialProblemType.typeNameEn:socialProblemType.typeNameAr];

        UIButton *checkBox = (UIButton *) [cell viewWithTag:kTagCheckButton];

        if([socialProblemType.selected boolValue]) {
            checkBox.selected = YES;
        }else
        {
            checkBox.selected = NO;
        }

    } else {
        cellViewIdentifier = kDescriptionCellViewIdentifier;
        cellViewIdentifier = [cellViewIdentifier stringByAppendingString:langAppendString];
        cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:cellViewIdentifier];

                    [cell setBackgroundColor:[UIColor clearColor]];


        GCPlaceholderTextView *  textArea= (GCPlaceholderTextView *)[cell viewWithTag:problemTypeTextViewTag];;

        if (textArea != nil) {
        textArea= (GCPlaceholderTextView *)[cell viewWithTag:problemTypeTextViewTag];
        }else
        {
         textArea= (GCPlaceholderTextView *)[cell viewWithTag:kTagDescriptionTextArea];
            [textArea setTag:problemTypeTextViewTag];
        }
            textArea.placeholder =getLocalizedString(@"Description");

        textArea.delegate = self;
            textArea.text = @"zaidi";




    }
}
return cell;}

1 个答案:

答案 0 :(得分:0)

我们可以使用包含每个单元格的字符串的NSMutableArray对象。您必须使用空字符串填充数组并使用此信息填充文本字段。它会像,

 textView.text = [textViewStringsArr objectAtIndex:indexPath.row];

由于您在视图控制器中以编程方式执行此操作,因此您必须将视图控制器设置为文本视图委托。你可以做到

-(void)textViewDidEndEditing:(UITextView *)textView {
UITableViewCell *cell = (UITableViewCell*)textField.superview;

NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];

... Since you've the index path, you can map it to an array.

[textViewStringsArr replaceObjectAtIndexPath:indexPath withObject:textView.text];
}

这将是基本的想法。从可变数组的空字符串开始,每次更新文本视图时通过用新文本替换原始文本来修改它们。希望这会有所帮助。