У меня есть UITableView
с пользовательскими ячейками.
У меня есть MyTableViewCell : UITableViewCell
и MyTableViewCellContentView : UIView
классы.
В основном я делаю то, что делается в демонстрационном приложении AdvancedTableViewCells от Apple с небольшим изменением, в некоторых строках я хочу использовать фон clearColor для отображения фона таблицы за закрашенным текстом .
Так что в MyTableView
cellForRowAtIndexPath
я делаю:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"MyCell";
MyTableViewCell *cell = (MyTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[MyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
cell.someValue = indexPath.section;
[cell finishedSetup];
return cell;
}
А в моих MyTableViewCell
х finishedSetup
:
cellContentView = [[MyTableViewCellContentView alloc] initWithFrame:CGRectMake(0, 0, 320, 80) cell:self];
cellContentView.autoresizingMask = UIViewAutoresizingNone;
cellContentView.contentMode = UIViewContentModeRedraw;
[self.contentView addSubview:cellContentView];
И в MyTableViewCellContentView
Я реализую метод drawRect
. И не планируйте использовать какие-либо подпредставления, а нарисуйте мой пользовательский контент, как это делает пример Apple в CompositeSubviewBasedApplication
.
Проблема в том, что для нескольких разделов я хочу использовать clearColor
backgroundColor
. Это работает до тех пор, пока ячейка с не-clearColor
backgroundColor
не будет повторно использована для рисования ячейки clearColor
, когда фон не будет очищен и по-прежнему будет иметь старый цвет.
Как сделать перерисовку фона?
Редактировать :
Я забыл упомянуть, я устанавливаю цвет фона в инициализации MyTableViewCellContentView
после вызова супер инициализации. Установка через:
self.backgroundColor = [UIColor clearColor];
Я проверил, что это действительно вызывается и вызывается, как и ожидалось, с clearColor или redColor.
Я также пытался установить цвет фона ячейки таблицы, это не помогло.
Edit # 2 : Вот мой метод drawRect:
- (void)drawRect:(CGRect)rect {
[super drawRect:rect];
static int i = 0;
[[NSString stringWithFormat:@"Cell %d", ++i] drawAtPoint:CGPointMake(3, 3) withFont:[UIFont boldSystemFontOfSize:16]];
}