表のセルに取り消し線ラベルを追加しようとしています (BOOL hasStrikethrough の条件付き)。問題は、テーブルが最初に表示されたときに取り消し線が表示されないことです (hasStrikethrough == YES であっても)。テーブルをスクロールすると、行が再表示され、取り消し線が正しく表示されます。取り消し線は、UITableViewCell のサブビューとして追加されている単なる UILabel です。
cellForRowAtIndexPath のコードは次のとおりです。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"ItemCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell==nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
Item *item = [self.fetchedResultsController objectAtIndexPath:indexPath];
cell.textLabel.text = item.itemName;
cell.textLabel.textAlignment = UITextAlignmentLeft;
cell.showsReorderControl = YES;
cell.shouldIndentWhileEditing = NO;
if ([[item hasStrikethrough] boolValue] == YES) {
[self addStrikethrough:cell];
}
return cell;
}
addStrikethrough のコードは次のとおりです。
- (void)addStrikethrough:(UITableViewCell*)cell
{
CGRect frame = cell.textLabel.frame;
UILabel *strikethrough = [[UILabel alloc] initWithFrame:frame];
strikethrough.opaque = YES;
strikethrough.backgroundColor = [UIColor clearColor];
strikethrough.text = @"------------------------------------------------";
strikethrough.lineBreakMode = UILineBreakModeClip;
[cell addSubview:strikethrough];
}
前もって感謝します :-)