Подтвердить что ты не робот

UITableView со статическими ячейками без cellForRowAtIndexPath. Как установить чистый фон?

У меня есть статический UITableView, и все выложено на Раскадке. В cellForRowAtIndexPath я просто использую

return [super tableView:tableView cellForRowAtIndexPath:indexPath];

и рабочий стол отлично работает. Однако я хочу установить фоны ячеек на [UIColor clearColor] Как я могу это сделать? В таблице содержится 30 ячеек, каждый из которых отличается.

Спасибо

4b9b3361

Ответ 1

Я не совсем уверен, что это сработает, потому что я никогда не пробовал использовать super для управления ячейками. Если ваш код работает с super, вы должны уйти от этого, чтобы установить цвет фона:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [super tableView:tableView cellForRowAtIndexPath:indexPath];
    cell.backgroundColor = [UIColor clearColor];
    return cell;
}

В любом случае, это кажется мне странным способом делать вещи. Обычно ячейки создаются и повторно используются в самом методе в соответствии с стандартным кодом UITableView boiletplate без вызова super.

Ответ 2

Попробуйте этот метод делегата:

- (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
 cell.backgroundColor = [UIColor clearColor];
}

Ответ 3

Вы можете настроить метод и вызвать его в свой viewDidLoad, чтобы получить все ячейки и делать с ними все, что хотите, вы можете использовать это:

NSArray *visibleIndexPaths = [self.tableView indexPathsForVisibleRows];

Чтобы получить все указательные пути для отображаемых в настоящее время ячеек

Затем перебираем их следующим образом:

UITableViewCell *cell = nil;
for (int i = 0; i < 30; i++) {
  cell = [self.tableView cellForRowAtIndexPath:[visibleIndexPaths objectAtIndex:i]];
  // Do your setup
}

Вы также можете ссылаться на этот документ разработчика Apple в разделе " Техника для содержимого Static Row"