Создание собственного accessoryView в методах setSelected и setHighlighted UITableViewCell приводит к игнорированию остальной части моего кода - PullRequest
0 голосов
/ 15 февраля 2012

В моем подклассе UITableViewCell я переопределяю методы setHighlighted и setSelected, чтобы изменить внешний вид ячейки, когда она выбрана, но всякий раз, когда я устанавливаю свойство accessoryView в любом из методов, весь мой другой код, который изменяет шрифт ицвета теней полностью игнорируются.

Например, использование этого кода изменит цвет текста текста и меток сведений

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    if (selected) {        
        self.textLabel.textColor         = [UIColor whiteColor];
        self.textLabel.shadowColor       = [UIColor clearColor];
        self.detailTextLabel.textColor   = [UIColor whiteColor];
        self.detailTextLabel.shadowColor = [UIColor clearColor];
    } 
}

Но в тот момент, когда я добавляю пользовательский accessoryView в смесь,весь другой код игнорируется, однако изображение accessoryView действительно появляется.

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    if (selected) {        
        self.textLabel.textColor         = [UIColor whiteColor];
        self.textLabel.shadowColor       = [UIColor clearColor];
        self.detailTextLabel.textColor   = [UIColor whiteColor];
        self.detailTextLabel.shadowColor = [UIColor clearColor];

        self.accessoryView = 
            [[UIImageView alloc] initWithImage:styleImage(@"/icons/disclosure_selected.png")];
    } 
}

Есть ли что-то, что я делаю неправильно?Как я могу правильно настроить accessoryView и остальной код ячейки во время выбранных и выделенных состояний?

Ответы [ 2 ]

0 голосов
/ 17 февраля 2012

В итоге я просто создал свой собственный UIImageView и скрыл встроенный.

0 голосов
/ 15 февраля 2012

Я думаю, что accessoryView - это UIButton, а не UIImageView ... Попробуйте:

accessory = [UIButton buttonWithType:UIButtonTypeCustom];
    [accessory setImage:[UIImage imageNamed:@"/icons/disclosure_selected.png"] forState:UIControlStateNormal];
    accessory.frame = CGRectMake(0, 0, 26, 26);      //You can change it
    accessory.userInteractionEnabled = YES;          //You can change it too
    self.accessoryView = accessory;

Надеюсь, это поможет

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