У меня есть splitViewController, destinationController - это tableViewController, и я хотел бы управлять дизайном ячейки, если пользовательский класс «MyCell». DrawRect вызывается только тогда, когда я перетаскиваю tableView: красный фон появляется только после исчезновения ячейки с экрана и повторного появления. Вы знаете, почему?configure cell drawRect: пользовательский drawRect появляется только после перетаскивания в tableView?
//in viewController.m
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
MyCell*cell = (MyCell*)[tableView dequeueReusableCellWithIdentifier:@"CellDetail"] ;
[self configureCell:cell atIndexPath:indexPath];
return cell;
}
- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath {
RDV *object = [self.fetchedResultsController objectAtIndexPath:indexPath];
cell.textLabel.text = [[object valueForKey:@"name"] description];
[cell setNeedsDisplay];
[cell layoutIfNeeded];
}
//in MyCell.m
-(void)drawRect:(CGRect)rect{
[self setBackgroundColor: [UIColor redColor]];
}
Спасибо rdelmar, ответ был сложным, мне пришлось использовать «MyRealCell * cell = (MyRealCell *) [tableView dequeueReusableCellWithIdentifier: @« MyCell »forIndexPath: indexPath];' с 'forIndexPath', таким образом, кадр contentView содержит что-то, в противном случае - 0,0,0,0. – Paul
@Paul, что это связано с настройкой цвета? – rdelmar
Если кадр равен 0,0,0,0, он ничего не рисует, тогда как если contentView имеет фрейм, может появиться цвет градиента. – Paul