0

Я создаю расширяемое табличное представление, когда мы нажимаем любую ячейку, которую должна расширять соответствующая ячейка, если мы щелкнем по той же ячейке, что она должна рухнуть. Превосходно работает. В каждой ячейке у меня есть элемент пользовательского интерфейса, который берется в пользовательской ячейке. Моя проблема заключается в том, что когда я нажал последнюю ячейку, она показывает элементы, но когда я нажимаю на вышеуказанные ячейки, элементы пользовательского интерфейса не отображают его, показывая пустое. Вот мое, что я пробовал в didSelectRowAtIndexPath.DidselectRowAtIndexPath работает для выбранной ячейки в tableview

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
// selectedIndex = indexPath.row; 
[tableView deselectRowAtIndexPath:indexPath animated:YES]; 

if ([_expandedCells containsObject:indexPath]) 
{ 
    [_expandedCells removeObject:indexPath]; 
} 
else 
{ 
    if ([_expandedCells count]) 
    { 
     [_expandedCells removeObjectAtIndex:0]; 
    } 

    [_expandedCells addObject:indexPath]; 

} 
// [self.voicemailTable reloadRowsAtIndexPaths:[NSArray  arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationFade]; 
// [self.voicemailTable reloadRowsAtIndexPaths:[self.voicemailTable indexPathsForVisibleRows] withRowAnimation:UITableViewRowAnimationFade]; 


[tableView beginUpdates]; 
[tableView endUpdates]; 

} 



- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

CGFloat kExpandedCellHeight = 150.0f; 
CGFloat kNormalCellHeigh = 60.0f; 


if ([_expandedCells containsObject:indexPath]) 
{ 

    customCell.playBtn.hidden = NO; 
    customCell.minimumLbl.hidden = NO; 
    customCell.maximumLbl.hidden = NO; 
    customCell.sliderBG.hidden = NO; 
    customCell.slider.hidden = NO; 

    return kExpandedCellHeight; 
} 
else 
{ 

    customCell.playBtn.hidden = YES; 
    customCell.minimumLbl.hidden = YES; 
    customCell.maximumLbl.hidden = YES; 
    customCell.sliderBG.hidden = YES; 
    customCell.slider.hidden = YES; 

    return kNormalCellHeigh; 
} 

} 

Это то, что я пытаюсь показать после выбора ячейки в таблице. Здесь _expandableCells является NSmutableArray. Заранее спасибо

+0

Настроена делегат и источник данных для Tableview? – iOSNoob

+0

почему вы вызываете эту строку [_expandedCells removeObjectAtIndex: 0]; ? – YuviGr

+0

Да, я установил делегат и источник данных для tableview @iOSNoob – svs

ответ

0

Попробуйте переместить весь код конфигурации ячейки в cellForRowAtIndexPath:

Как так:

YourCustomCellClass *customCell = [tableView - (id)dequeueReusableCellWithIdentifier: <your cell identifier> forIndexPath:indexPath]; 
if ([_expandedCells containsObject:indexPath]){ 
    customCell.playBtn.hidden = NO; 
    customCell.minimumLbl.hidden = NO; 
    customCell.maximumLbl.hidden = NO; 
    customCell.sliderBG.hidden = NO; 
    customCell.slider.hidden = NO; 
}else{ 
    customCell.playBtn.hidden = YES; 
    customCell.minimumLbl.hidden = YES; 
    customCell.maximumLbl.hidden = YES; 
    customCell.sliderBG.hidden = YES; 
    customCell.slider.hidden = YES; 
} 
return customCell; 
+0

Oh !! Извините, я .. Я уже пробовал с этим. Моя фактическая цель - это когда я выбираю ячейку, которую он должен развернуть, и отображать кнопку воспроизведения и слайдер в расширенной ячейке. если я нажимаю кнопку воспроизведения, должен воспроизводиться один звуковой файл. Для меня соответствующий звук работает для последней ячейки, которая отображает все элементы в этом. – svs

+0

Проблема в том, что вы настраиваете ячейку в неправильном месте. ВысотаForRowAtIndexPath не предназначена для этого – YuviGr

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