У меня есть подкласс UITableViewCell, который содержит несколько элементов - UIImageViews, Labels и т. Д.
Поскольку эта ячейка предназначена для многократного использования, я хочу немного изменить ее внешний вид в зависимости от того, какие данные она отображает в данный момент.
Так, в качестве примера - у меня есть это представление в моем пользовательском UITableViewCell:
UIImageView* delimeterView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cellDelimiter.png"]];
Который я бы хотел скрыть, иногда так:
- (void) setRecord:(id)record__ {
if (record__.type == NO_DELIMETER_VIEW)
delimeterView.hidden = YES;
else
delimeterView.hidden = NO;
[self setNeedsLayout];
}
Но проблема в том, что delimeterView всегда будет отображаться в ячейке, как если бы он был нарисован один раз в методе init, а затем контекст рисования никогда не изменялся и не очищался. Я попытался установить для свойства clearsContextBeforeDrawing значение YES как для ячейки, так и для ее contentView. Я также попытался установить для opaque для ячейки и ее contentView значение NO, поскольку я прочитал, что в этом случае могут возникнуть некоторые проблемы, если вы используете прозрачный вид.
Ничего не помогает.
Похоже, UITableViewCell никогда не очищает свой графический контекст и просто закрашивает старые элементы.
Любые советы о том, что я делаю не так?
Я знаю, что, возможно, смогу исправить это, выполняя пользовательский рисунок, но я бы предпочел этого не делать.