Выбранный UIButton исчезает в выбранном UITableViewCell

У меня есть таблица, у меня есть делегат cellForRowAtIndexPath к ней, и у меня есть экземпляр UITableViewCell, создаваемого в том методе, который я возвращаю. Где-нибудь в cellForRowAtIndexPath я также добавляю UIButton к cell.contentView той ячейки. Все это хорошо работает, пока я не выбираю ту ячейку с кнопкой в нем. Изменения ячеек окрашивают к синему (который в порядке), uibutton изменяет свой цвет на синий также. Теперь, если я нажимаю на это UIButton в выбранной ячейке, он просто исчезает! Ничего себе, это странно, как я фиксирую его? Я хочу, чтобы UIButton в выбранной ячейке остался, когда я нажимаю его.

Править: включенный моя cellForRowAtIndexPath реализация

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
static NSString *sectionsTableIdentifier = @" sectionsTableIdentifier ";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: sectionsTableIdentifier];


    for (UIView *view in cell.contentView.subviews)
      [view removeFromSuperview];


     if (cell == nil) {
      cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero 
                reuseIdentifier: sectionsTableIdentifier] autorelease];

     }

     CGRect newIconRect = CGRectMake(276, 40, 29, 29);
      UIButton *newIcon = [[UIButton alloc] initWithFrame:newIconRect];
      [newIcon setImage:[UIImage imageNamed:@"mynewicon.png"] forState:UIControlStateNormal];
      [cell.contentView addSubview:newIcon];
      [newIcon release];


    return cell;

    }
5
задан Mike 13 April 2010 в 23:03
поделиться

2 ответа

Я заметил похожую проблему в OS 4.0 beta, где у меня была UIButton в UITableViewCell с setImage:forState:UIControlStateNormal. Кнопка исчезала, когда я возвращался к виду таблицы после выбора строки и нажимал на другой вид таблицы. Чтобы решить эту проблему, я установил для изображения параметр setImage:forState:UIControlStateHighlighted. Я не уверен, что это решит вашу конкретную проблему, но мне это помогло. Я думаю, что установка button.highlighted=NO в didSelectRowAtIndexPath: также могла бы сработать, но я не пробовал.

6
ответ дан 13 December 2019 в 05:32
поделиться

Похоже, что кнопка каким-то образом наследует выбранное состояние как свое выделенное состояние. Кто-нибудь нашел решение этой проблемы?

РЕШЕНИЕ: Я не совсем доволен этим хаком, но он работает для моих целей. В принципе, я хочу, чтобы кнопка появлялась только тогда, когда ячейка выделена. Подкласс UITableViewCell и добавьте эти переопределения (editButton - это экземпляр кнопки, который был добавлен в contentView ячейки в init).

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    editButton.hidden = YES;

    [super setSelected: selected
              animated: animated];

    editButton.highlighted = NO;

    if (selected)
        [editButton performSelector: @selector(setHidden:)
                         withObject: nil
                         afterDelay: 0.2];
}

- (void)setSelected:(BOOL)selected {
    editButton.hidden = YES;

    [super setSelected: selected];

    editButton.highlighted = NO;

    if (selected)
        [editButton performSelector: @selector(setHidden:)
                         withObject: nil
                         afterDelay: 0.2];
}
2
ответ дан 13 December 2019 в 05:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: