0

カスタム クラスを作成し、すべてのテキストの色を黒に設定しました。行を選択した後、行の内容のテキストの色を緑に変更しました。左スワイプ ジェスチャ イベントで、再びテーブルをリロードしましたが、以前に選択した行のテキストの色が黒に戻りません。テーブルのリロード後も緑色のままですが、テキスト値が変化しています。色が黒に戻らない理由

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSInteger rows=indexPath.row;
    if(rows==2||rows==3||rows==4)
    {
  UIImageView *localImageView=(UIImageView*)[self.view  viewWithTag:rows];
    localImageView.image=[UIImage imageNamed:@"check"];
    UILabel *localLabel=(UILabel*)[self.view viewWithTag:rows+100];

        Question *question=[[Question alloc]init];
        question=[self.questionsArray objectAtIndex:self.currentQuestionIndex];
        if([localLabel.text isEqualToString:question.correctOptionText])
        {
            localLabel.textColor=[UIColor greenColor];  //changed color here
        }
        else{
            localLabel.textColor=[UIColor redColor];

        }
    }
}

カスタム クラス コード

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        UIImageView *localCheckImageView=[[UIImageView alloc]initWithFrame:CGRectMake(45, 10, 25, 25)];
        localCheckImageView.image=[UIImage imageNamed:@"dot"];
        self.checkImageView=localCheckImageView;
        [self.contentView addSubview:self.checkImageView];


        UILabel *localOptionLabel=[[UILabel alloc]initWithFrame:CGRectMake(95, 0, 200, 44)];
        [localOptionLabel setBackgroundColor:[UIColor clearColor]];
        [localOptionLabel setFont:[UIFont systemFontOfSize:18.0f]];
        [localOptionLabel setTextColor:[UIColor blackColor]];

        self.optionLabel =localOptionLabel;
        [self.contentView addSubview:self.optionLabel];
        [localCheckImageView release];
        [localOptionLabel release];
    }
    return self;
}

cellforRow コード

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    Question *question=[[Question alloc]init];
    question=[self.questionsArray objectAtIndex:self.currentQuestionIndex];
    //UITableViewCell *cell=[[UITableViewCell alloc]init];
    NSInteger rows=[indexPath row];
    static NSString *rowZeroCellIdentifier = @"rowZero";
    static NSString *rowOneCellIdentifier=@"rowOne";
    static NSString *rowRemainingCellIdentifier=@"rowRemaining";

    if(rows==0)
    {
    QuesNumberCell *cell =(QuesNumberCell *)[tableView dequeueReusableCellWithIdentifier:rowZeroCellIdentifier];
    if (cell == nil)
    {
        cell = [[QuesNumberCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:rowZeroCellIdentifier];

                                         }

    cell.questionNumberLabel.text = [NSString stringWithFormat:@"Question: %i",question.questionNumber];
return cell;

    }
   else if(rows==1)
    {
        QuestionTextCell *cell=(QuestionTextCell *)[tableView dequeueReusableCellWithIdentifier:rowOneCellIdentifier];
        if (cell == nil)
        {
            cell = [[QuestionTextCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:rowOneCellIdentifier];

        }

        if(_explainButtonFlag==1)
        {
         cell.questionTextView.text = [NSString stringWithFormat:@"%@",question.questionText];
        }
        else
        {
           cell.questionTextView.text = [NSString stringWithFormat:@"%@",question.explanationText];
        }

        return cell;
          }
   else{
       OptionsCell *cell=(OptionsCell *)[tableView dequeueReusableCellWithIdentifier:rowRemainingCellIdentifier];
       if (cell == nil)
       {
           cell = [[OptionsCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:rowRemainingCellIdentifier];

       }
       if(rows==2)
       {
       cell.optionLabel.text = [NSString stringWithFormat:@"%@",question.optionOneText];
       }
       if(rows==3)
       {
           cell.optionLabel.text = [NSString stringWithFormat:@"%@",question.optionTwoText];
       }
           if(rows==4)
           {
               cell.optionLabel.text = [NSString stringWithFormat:@"%@",question.optionThreeText];
           }

       //[cell setSelected:NO animated:NO];
       [cell.checkImageView setTag:indexPath.row];
       [cell .optionLabel setTag:indexPath.row+100];
       return cell;
   }
4

1 に答える 1

3

セルを再利用しているので黒色ではありません。cellForRowメソッドでテキストの色を指定します。あなたが外に色を与えるのを見てください。

          if (cell == nil)
          {
         cell = [[QuesNumberCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:rowZeroCellIdentifier];

          }
           [cell.localOptionLabel setTextColor:[UIColor blackColor]];

カスタムセルでは、ビューのみを作成する必要があります。セルコンテンツへのデータは、cellForRowメソッドで指定する必要があります。これがお役に立てば幸いです。

于 2013-03-04T12:31:08.710 に答える