selectedBackgroundView в пользовательском UITableViewCell - PullRequest
0 голосов
/ 27 июля 2011

Итак, у меня есть ячейка, загруженная непосредственно из файла пера:

NSArray *cellContents = [[NSBundle mainBundle] loadNibNamed:@"ResultsTableViewCell" owner:self options:nil];
        cell = [cellContents objectAtIndex:0];

В файле пера есть UITableViewCell и два UIViews, каждый со своими собственными подпредставлениями. Strucuture:

-TableViewCell
   Label 1
   Label 2
-UIView A
   UIView a
   UIView b
   UIImageView c
   UIImageView d
-UIView B
   UIView e
   UIView f
   UIImageView g
   UIImageView h

Таким образом, UIView A связан со свойством backgroundView для UITableViewCell, UIView B связан со свойством selectedBackgroundView.

Проблема: Так почему же A прекрасно отображается в качестве фона для ячейки со всеми ее подпредставлениями, и UIImageViews в B работает нормально, но UIViews в B просто не отображается, однако я изменяю это? Спасибо!

1 Ответ

0 голосов
/ 27 января 2012

Вот что я нашел в моем деле.Когда я зарегистрировал RGB и альфа цвета фона UIView, я обнаружил, что все они были установлены в 0, когда была выбрана ячейка:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    CGFloat red, green, blue, alpha;
    [viewE.backgroundColor getRed:&red green:&green blue:&blue alpha:&alpha];
    NSLog(@"Selected: Red=%f, Green=%f, Blue=%f, alpha=%f", red, green, blue, alpha);
}

-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
    CGFloat red, green, blue, alpha;
    [viewE.backgroundColor getRed:&red green:&green blue:&blue alpha:&alpha];
    NSLog(@"Deslected: Red=%f, Green=%f, Blue=%f, alpha=%f", red, green, blue, alpha);
}

Первоначально ничего не было выбрано.Нажмите на строку в таблице, и в журнале отобразится:

Selected: Red=0.000000, Blue=0.000000, Green=0.000000, alpha=0.000000

, и мое подпредставление не появится (Примечание Альфа = 0).Забавно, потому что, когда я зарегистрировал viewE.alpha, он показал, что это 1. 1. 1007 *

Нажмите строку еще раз, чтобы отменить ее выбор:

Deselected: Red=0.667000, Blue=0.776000, Green=0.220000, alpha=1.000000

Это то, что я ожидаю.

MyЯчейка таблицы - это пользовательский UITableViewCell.Итак, в моем собственном классе UITableViewCell я добавил этот код:

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    UIColor *saveColor = self.viewE.backgroundColor;
    [super setSelected:selected animated:animated];
    if (selected)
        self.viewE.backgroundColor = saveColor;
}

Теперь представление viewE появляется, когда ячейка выбрана.

Кажется, что код здесь компенсирует условие, которое должноне существовало в первую очередь, но это работает!

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