Как изменить цвет фона пустого объекта UITableViewCell в зависимости от его положения? - PullRequest
5 голосов
/ 08 октября 2010

Я пытаюсь написать код для изменения цвета фона ячейки в зависимости от ее положения в таблице. Хотя следующий код «работает», он воздействует только на те ячейки, которые ему переданы. Пустые ячейки не действуют.

- (void)tableView: (UITableView*)tableView willDisplayCell: (UITableViewCell*)cell forRowAtIndexPath: (NSIndexPath*)indexPath
{
    if(!indexPath.row%2)
    {
        cell.backgroundColor = [UIColor colorWithRed: 0.0 green: 0.0 blue: 1.0 alpha: 1.0] ;
        NSLog(@"Blue");
    }
    else{
        cell.backgroundColor = [UIColor whiteColor];
        NSLog(@"white");
    }
    cell.textLabel.backgroundColor = [UIColor clearColor];
    cell.detailTextLabel.backgroundColor = [UIColor clearColor];
}

Как я могу повлиять на остальные отображаемые ячейки, если они пустые, когда в списке мало элементов?

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

Ответы [ 4 ]

2 голосов
/ 08 октября 2010

Полагаю, вы хотите изменить фон только "пустых" ячеек ... Тогда вы можете изменить backgroundColor в InterfaceBuilder UITableView. Но это повлияет на все пустые ячейки.

Вы также можете изменить тип разделителя.

Также посмотрите здесь: http://www.zenbrains.com/blog/en/2010/06/color-de-fondo-de-celdas-vacias/

РЕДАКТИРОВАТЬ:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // 7 depends on how many cell is shown
    return ([source count] <= 7) ? 7 : [source count];
}

От: Показать пустые UITableViewCells в пользовательском UITableView

1 голос
/ 02 февраля 2013

Должно работать, если задано свойство backgroundColor для contentView ячейки, а не backgroundColor ячейки:

cell.contentView.backgroundColor = [UIColor colorWithRed: 0.0 green: 0.0 blue: 1.0 alpha: 1.0] ;
0 голосов
/ 30 мая 2013

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

[[cell contentView] setBackgroundColor:[UIColor colorWithRed:0 green:128/255.f blue:0 alpha:1]];

в методе

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

с той же логикой, которую вы использовали в методе willDisplayCell

как предложено здесь: http://www.zenbrains.com/blog/en/2010/06/color-de-fondo-de-celdas-vacias/

* обратите внимание, что мы меняем цвет фона для [cell contentView]

0 голосов
/ 08 октября 2010

Вы должны реализовать

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

в вашем делегате и инициализируйте ячейки, как вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...