Установка цвета фона ячейки таблицы на iPhone

Я хочу добиться эффекта, когда одна ячейка таблицы будет иметь синий фон, следующий будет белым, следующий будет синим снова, а затем белым и так далее … не могли бы вы сообщить мне, как я могу сделай это?

Благодарю.

Добавьте этот метод в делегат табличного представления:

#pragma mark UITableViewDelegate - (void)tableView: (UITableView*)tableView willDisplayCell: (UITableViewCell*)cell forRowAtIndexPath: (NSIndexPath*)indexPath { cell.backgroundColor = indexPath.row % 2 ? [UIColor colorWithRed: 0.0 green: 0.0 blue: 1.0 alpha: 1.0] : [UIColor whiteColor]; cell.textLabel.backgroundColor = [UIColor clearColor]; cell.detailTextLabel.backgroundColor = [UIColor clearColor]; } 

Вы должны установить цвет фона содержимого содержимого ячейки

 cell.contentView.backgroundColor = [UIColor colorWithRed...] 

Это установит фон всей ячейки.

Для этого для альтернативных ячеек используйте indexPath.row и % by 2.

Если вы хотите установить цвет ячеек на основе некоторого состояния в фактическом объекте данных ячейки, то это другой подход:

Если вы добавите этот метод в делегат табличного представления:

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

Затем в вашем методе cellForRowAtIndexPath вы можете:

 if (myCellDataObject.hasSomeStateThatMeansItShouldShowAsBlue) { cell.contentView.backgroundColor = [UIColor blueColor]; } 

Это избавляет вас от необходимости снова извлекать ваши объекты данных в методе willDisplayCell.

Метод cell.contentView.backgroundColor = [UIColor colorWithRed...] в ответе lostInTransit работает, если вы не используете встроенную метку UITableViewCell.

Я обнаружил, что если вы используете встроенную метку, например, установив cell.text , вы получите непрозрачный белый блок под меткой, и только два конца ячейки отображают нужный цвет.

Я не нашел способа редактировать встроенную метку, чтобы она была непрозрачной (вы можете получить к ней доступ через UILabel* cellLabel = [cell.contentView.subviews objectAtIndex:0] ).

Я решил проблему, добавив свой собственный UILabel . Как это:

 UILabel* cellLabel = [[[UILabel alloc] initWithFrame:cell.frame] autorelease]; cellLabel.text = @"Test with non-opaque label"; cellLabel.backgroundColor = [UIColor clearColor]; cellLabel.opaque = NO; [cell.contentView addSubview:cellLabel]; cell.contentView.backgroundColor = [UIColor darkGrayColor]; 

добавьте следующий код в cellForRowAtIndexPath

 if (indexPath.row % 2 == 0){ cell.backgroundColor =[UIColor blueColor]; } else { cell.backgroundColor =[UIColor whiteColor]; } 

я думаю, это поможет вам

При использовании настройки ячейки таблицы по умолчанию следующие два свойства будут окрашивать как фон ячейки, так и фоновый цвет ее метки, избегая необходимости создания пользовательской метки в качестве подсмотра содержимого contentView ячейки.

 cell.textLabel.backgroundColor = [UIColor redColor]; cell.contentView.backgroundColor = [UIColor redColor]; 

// метод экономии времени:

// в ячейке для метода индекса:

 static NSString* evenIdentifier = @"even"; static NSString* oddIdentifier = @"odd"; __weak identifier; if(indexPath.row %2 ==0) { identifier = evenIdentifier; }else{ identifier = oddIdentifier; } cell = dequeue..WithIdentifier: identifier; if(cell == nil){ cell = allocOrLoadNib...; cell.backgroundColor = (indexPath.row %2 ==0 ? evenColor : oddColor); } 

// изменим содержимое ячейки, а затем вернем ее. Легкая работа.

// это код схемы. Не копируйте его напрямую.

Это сработало для меня .. В cellForRowAtIndexPath,

 cell.textLabel.backgroundColor = [UIColor clear]; cell.detailTextLabel.backgroundColor = [UIColor clearColor]; cell.contentView.backgroundColor = [UIColor grayColor]; //whichever color u want cell.backgroundColor = cell.contentView.backgroundColor; 

Для вас, как упоминалось ранее на основе значения indexPath% 2, вы можете выполнить вышеуказанную функцию.

Этот код является немного более чистым решением для случая, когда вы используете встроенную текстовую метку и не хотите, чтобы белый цвет фона текстовой метки перекрывал цвет фона. Это также устраняет проблему нарушения округлых углов сгруппированного стиля табличного представления (что происходит, когда вы используете cell.contentView.backgroundColor вместо cell.backgroundColor):

 UITableViewCell *cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; cell.backgroundColor = [UIColor redColor]; cell.textLabel.backgroundColor = [UIColor clearColor]; //transparent background 
  UIView *bg = [[UIView alloc] initWithFrame:cell.frame]; bg.backgroundColor = [UIColor colorWithRed:175.0/255.0 green:220.0/255.0 blue:186.0/255.0 alpha:1]; cell.backgroundView = bg; [bg release]; 

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

 - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.row%2 == 0) { UIColor *altCellColor = [UIColor blackColor]; cell.backgroundColor = altCellColor; }} 

Это так просто, как добавление и изменение значений модуля.

Добавить backgroundView в ячейку и установить цвет фона по вашему выбору.

 let backgroundView = View() // add background view via code or via storyboard view.backgroundColor = UIColor.red // your color cell.backgroundView = backgroundView 
  • Интерфейс пользовательского интерфейса iOS 7
  • Как остановить прокрутку UITextView при входе в нее
  • Где хранятся cookies UIWebView?
  • Сохранение изображения в plist
  • Поддерживаемые форматы аудиофайлов в iPhone
  • Программно заблокировать и разблокировать экран iPhone
  • Как исправить ошибку NSURLErrorDomain -999 в ОС iPhone 3.0
  • didFinishPickingMediaWithInfo return nil фото
  • Получение «Подтверждение подлинности подписи, совпадающее с данным профилем, не найдено в вашей цепочке ключей»
  • iPhone «Закладка на Homescreen» удаляет cookies и сеанс?
  • Добавить UIPickerView и кнопку в листе действий - как?
  • Interesting Posts

    SIMD, подписанный с неподписанным умножением для 64-разрядных * 64-бит до 128 бит

    Потоковое видео в Java

    Windows 7 не устанавливает USB-устройства

    В чем разница между портом и сокетом?

    Способ определения, является ли строка пути локальной или удаленной машиной

    Угловой 2 – возврат данных непосредственно из наблюдаемого

    Гистограмма Overlay с кривой плотности

    Как отключить всплывающие сообщения в Windows 8?

    Получение ошибки «Не связанный с streamом запрос» из весны в моем веб-приложении

    Когда я отправляю обратно на мой controller, все значения для моей модели равны нулю

    Сохранение файла в формате CSV в Excel всегда удаляет спецификацию

    Ctrl + Y не работает.

    Незарегистрированное исключение java.sql.SQLException; должны быть пойманы или объявлены брошенными?

    Конечные точки Google и аутентификация пользователя

    Лучше ли выбрать более переполненный канал WiFi или один с сильным конкурентом?

    Давайте будем гением компьютера.