2015-07-27 2 views
1

У меня есть ячейки с идентификаторами в Storyboard и соответствующие объекты с тегами. При первом вызове cellForRowAtIndexPath viewWIthTag возвращает объект ok. В следующий раз btnCompartilhar, например, равен нулю.ViewWIthTag возвращает nil (возвращает объект только один раз)

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

    NSString *sectionTitle = [sectionsTitles objectAtIndex:indexPath.section]; 
    NSArray *secAtt = [attractions objectForKey:sectionTitle]; 

    Evento *evento = (Evento*)[secAtt objectAtIndex:indexPath.row]; 

    UITableViewCell *cell = nil; 
    if(evento.listaImagens && [evento.listaImagens count] > 0) { 
     cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath]; 
    } 
    else { 
     cell = [tableView dequeueReusableCellWithIdentifier:@"CellSemFoto" forIndexPath:indexPath]; 
    } 

    [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 



    UIButton *btnCompartilhar = (UIButton *)[cell.contentView viewWithTag:40]; 
    [btnCompartilhar.titleLabel setHidden:YES]; 
    btnCompartilhar.titleLabel.text = sectionTitle; 
    btnCompartilhar.tag = indexPath.row; 
    [btnCompartilhar addTarget:self action:@selector(compartilharClick:) forControlEvents:UIControlEventTouchDown]; 
    return cell; 
} 

Я выполнил команду ро [cell.contentView recursiveDescription] и обнаружил, что кнопка с тегом 40 есть только в первый раз. Но все остальные объекты все время

ответ

0

Вызов btnCompartilhar.tag = indexPath.row; изменяет тег, поэтому его нельзя найти в следующий раз, когда ячейка повторно используется.

Вы не должны полагаться на viewWithTag:, вместо этого вы должны создать подклассу UITableViewCell и добавить свойства, которые позволят вам получить доступ ко всем необходимым вам видам. Кроме того, ячейка может также иметь дополнительную информацию, такую ​​как номер строки, если она вам нужна.

Обратите внимание, что ваш текущий подход имеет другие проблемы, такие как добавление цели и действия несколько раз, что тоже не отличная идея.

+0

Большое спасибо! Он отлично работает! хехехе –

Смежные вопросы