したがって、オブジェクトのいずれかの値が > 0 であるかどうかに基づいて、プログラムで UIButton を作成しています。ただし、その値を編集してテーブルをリロードすると、ボタンが削除されません。ラベルに表示されているため、値は明らかに > 0 であり、nil ではありません。ボタンをすべてのセルに追加してから、その隠しプロパティを設定してみました。これにより、以下のコードと同じ動作が得られます。アプリを停止してアプリを再実行すると、どのように表示されるかが表示されます。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
CGRect newIconRect = CGRectMake(280, 5, 33, 33);
UIButton *warningButton = [[UIButton alloc] initWithFrame:newIconRect];
warningButton.tag = 66;
[cell.contentView addSubview:warningButton];
}
UIButton *warningButton = (UIButton *)[cell.contentView viewWithTag:66];
[warningButton setImage:[UIImage imageNamed:@"exclamation.png"] forState:UIControlStateNormal];
[warningButton addTarget:self action:@selector(warningButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
if (ueo.daysLeft >= 0)
{
daysLeftLabel.text = [[NSString alloc]initWithFormat:@"%i recurringDays to go", ueo.daysLeft];
warningButton.hidden = YES;
}
else
{
daysLeftLabel.text = [[NSString alloc]initWithFormat:@"%i recurringDays have passed", ueo.daysLeft];
warningButton.hidden = NO;
}
}