コンテンツへスキップ

UITableViewでセル再描画時に文字が重ならないようにする

セルをカスタマイズしたUITableViewを作成し、シミュレータで動かしてみると、上下にスクロールして再描画する際に、何の関係もないセルの値が別のセルに再描画されて、文字の上に文字が幾重にも重なり、凄いことになってしまった。それを回避するためには、セル内容作成メソッド cellForRowAtIndexPath で、サブビューを一旦取り除くことで対応できる。

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
static NSString *CellIdentifier = @"Cell";
    
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
// ここまでデフォルトのまま。
    
// サブビューを取り除く
for (UIView *subview in [cell.contentView subviews]) {
	[subview removeFromSuperview];
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です