2017-12-11 24 views
0

関連する回答を読んだことがありますが、何も処理されていません。初めてテーブルが読み込まれると、すべてが正常ですが、テーブルをスクロールするとすべてが変更されます。誰かが助けてくれたら?ここに私のコードです。私は再びダウンとアップテーブルをスクロールした後UITableViewCellは、テーブルビューをスクロールするときにデータとデザインを変更します

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 
return [[arrReportList objectAtIndex:section]count]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 

    SummaryReportTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"summaryCell"]; 
if (cell == nil) { 
    cell = [[[NSBundle mainBundle] loadNibNamed:@"SummaryReportTableViewCell" owner:self options:nil] objectAtIndex:0]; 
}  
cell.selectionStyle = UITableViewCellSelectionStyleNone; 
[cell setCellLayoutWithArray:[[arrReportList objectAtIndex:indexPath.section]objectAtIndex:indexPath.row]]; 
... 
... 
} 

SummaryReportTableViewCell.m

-(void)setCellLayoutWithArray :(NSMutableArray *)array { 

[btnViewPieChart setImage:[CommonMethod createIconWithIconName:@"fa-pie-chart" ForegroundColor:kColorEnableIcon BGColor:[UIColor clearColor] size:CGSizeMake(25, 25)] forState:UIControlStateNormal]; 

btnDomain.titleLabel.lineBreakMode = NSLineBreakByWordWrapping; 
btnDomain.titleLabel.textAlignment = NSTextAlignmentLeft; 
btnDomain.contentEdgeInsets = UIEdgeInsetsMake(0, 8, 0, 0); 
[btnDomain setTitle:[array valueForKey:@"DomainName"] forState:UIControlStateNormal]; 

[btnGoal setTitle:[array valueForKey:@"Goals"] forState:UIControlStateNormal]; 
[self UIButton:btnGoal withValue:btnGoal.titleLabel.text]; 
} 

-(void)UIButton :(UIButton *)btn withValue:(NSString *)value { 
if ([btn.titleLabel.text integerValue] > 0) { 
    [btn setBackgroundColor:kColorTabMenuBG]; 
    btn.titleLabel.font = kFontBold(16); 
    btn.titleLabel.textColor = kColorTabDeActiveMenu; 
    btn.userInteractionEnabled = true; 
} else { 
    [btn setBackgroundColor:[UIColor whiteColor]]; 
    btn.titleLabel.font = kFontNormal(16); 
    btn.titleLabel.textColor = [UIColor blackColor]; 
    btn.userInteractionEnabled = false; 
} 
} 

画像初めて

enter image description here

同じデータ

enter image description here

+0

ボタンをリセットするだけで、setCellLayoutWithArrayの変更が反映されます。例えば。クリックしたときにフォントを太字に変更した場合は、通常にリセットしてください。 –

+0

@Krutikaそれは再利用性の問題です。 'cellForRowAtIndexPath'が呼び出されるたびに、要件に基づいてデザインをロード、アンロード、および変更する必要があります。 – KiranJasvanee

+0

@KiranJasvaneeあなたがcell view controllerで書いたUI chnagesを意味し、cellForRowメソッドのmain view controllerにそこにいる必要がありますか? –

答えて

1

問題は細胞内の色であることがわかります。

理由:あなたが上にスクロールするとき、あなたはそれがテーブルビューのデキュープールに行くのセルをデキューし、前のデキューセルを頼む時はいつでも、 は、したがって、前のデキューのセルのための完全なデータは、新しいセルのために来て、何が今までに変更(データソース)あなたが新しいセルを反映するようにし、以前のセルのものと同じになるプロパティ、フィールド、またはデータソースを変更しない場合。

解決策:データは新しいセルのために再度設定されるため、値は正常になります。セルの背景色を追加するセルモデルまたはデータソースを作成して、すべてのセルに対してリセットするか、作成しているビジネスロジックに基づいて明示的に色を変更します。

+0

'setCellLayoutWithArray'が' cellForRowAtIndexPath'で呼び出されましたか? – trungduc

+0

はい、私はそれを見ましたが、背景色はそこでリセットされていません。 –

+0

を確認してください。なぜリセットされていないのですか?それは間違った色ではいかがですか? – trungduc

関連する問題