UITableViewCell с полупрозрачным выделенным фоном - PullRequest
0 голосов
/ 25 марта 2012

Мне нужно скрыть нормальное (невыбранное - cell.backgroundView) изображение ячейки, когда ячейка выделена, и показать ее, когда она не выделена.

Способ работы табличного представления заключается в том, что нормальное представление(cell.backgroundView) всегда есть, и когда ячейка выделена, она анимирует выбранное изображение (cell.selectedBackgroundView) в представление и помещает поверх обычного представления.

Проблема заключается в том, что выбранная ячейка является полупрозрачнойи нормальная клетка всегда видна под ней.Я создал в 2 представлениях для своего (пользовательского) UITableViewCell, который загружаю в свой контроллер представлений:

-(void)tableView:(UITableView *)tableView 
 willDisplayCell:(UITableViewCell *)cell 
forRowAtIndexPath:(NSIndexPath *)indexPath
{
    cell.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"XYCell"]];
    cell.selectedBackgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"XYCellSelected"]];
}

Я очистил цвета в нужных местах, но не могу заставить его работать так, как я хочу.Поскольку мои выбранные изображения (cell.selectedBackgroundView) являются полупрозрачными, cell.backgroundView все еще можно увидеть под ним.Как я могу заставить его уйти?

Ответы [ 2 ]

1 голос
/ 13 декабря 2013
- (void)tableView:(UITableView *)tableView didHighlightRowAtIndexPath:(NSIndexPath *)indexPath
{
    self.highlightIndexPath = indexPath;    // for iOS6
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    cell.backgroundView.hidden = YES;
}

- (void)tableView:(UITableView *)tableView didUnhighlightRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    if (indexPath.row == NSNotFound) {
        // for iOS6
        cell = [tableView cellForRowAtIndexPath:self.highlightIndexPath];
    }
    cell.backgroundView.hidden = NO;
}
1 голос
/ 25 марта 2012

В общем, если вы хотите создать собственную ячейку, вы должны реализовать свою собственную uitableviewcell.

В вашем случае посмотрите на

- (void)setSelected:(BOOL)selected animated:(BOOL)animated;

Пример кода, чтобы помочь вам:

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
   [super setSelected:selected animated:animated];
   //your own backgroundview when selected
   self.selectedBackgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"selectedBck.png"]];
   if (selected){
        // edit the cell's view when it's selected
        self.backgroundView = nil;
    } 
    else {
       // edit the cell's view when it isn't selected
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...