Осветите решение для рисования прямоугольников ячеек

Как настроить цвета фона/границы ячейки сгруппированной таблицы?

После прочтения этого сообщения я попытался использовать это решение. Вот мой код в методах tableViewDelegate:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
   CustomCellBackgroundView *customBackground = [CustomCellBackgroundView alloc];

    [customBackground setBorderColor:[UIColor blackColor]];
    [customBackground setFillColor:[UIColor redColor]];
    [customBackground setPosition:0]; //i'll deal with that later

    [cell setSelectedBackgroundView:customBackground];
    [customBackground release];


    UIImageView* selectedBackgroundCell = [[[UIImageView alloc] initWithFrame:CGRectNull] autorelease];
    [selectedBackgroundCell setImage:[UIImage imageNamed:@"cell_bg_50_hover.png"]];
    [customBackground drawRect:selectedBackgroundCell.frame];

    [cell setSelectedBackgroundView:selectedBackgroundCell];

    //standard background color
    [cell setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"cell_bg_50.png"]]];
}

Но, к сожалению, это ничего не меняет. Знаете ли вы, что я делаю неправильно?

Ответ 1

Я считаю, что всякий раз, когда вы делаете представления, вы должны указать для этого некоторый фрейм. Поэтому задайте рамку CGRectZero как для фона, так и для фона....

После всего лишь работы для меня, когда я тестировал.

  UIView * bkview = [[[UIView alloc] initWithFrame: CGRectZero] autorelease];
   bkview.backgroundColor = [UIColor redColor];
   cell.selectedBackgroundView = bkview;
Код>

Ответ 2

Вы отпускаете customBackground, а затем вы вызываете [customBackground drawRect: selectedBackgroundCell.frame];

Очевидно, что вызов функции на указателе nil ничего не сделает.