2013-05-05 3 views
24

У меня есть пользовательская ячейка таблицы в grouptableview. И у меня есть один скрытый. Затем я должен сделать это видимым. Сотовый тег 3.UITableView set tableview строка скрыта

Это не работает мой код:

if (self.tableView.tag == 3) { 
       self.tableView.hidden = NO; //Not working. 
      } 

Просто мне нужно сделать один ряд видна. Надеюсь, вы понимаете.

+0

См этот пост http://stackoverflow.com/questions/2670635/hiding-uitableviewcell – icodebuster

+1

Вы скрываете всю Tableview там, а не строку. – memmons

ответ

39

Передайте высоту ячейки zero для этой конкретной ячейки в heightForRowAtIndexPath:, он будет автоматически скрыто: -

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
     float heightForRow = 40; 

     YourCustomCell *cell =(YourCustomCell *)[tableView cellForRowAtIndexPath:indexPath]; 

     if(cell.tag==3) 
      return 0; 
     else 
      return heightForRow; 
} 

Добавьте следующий метод в код, он будет делать трюк. Надеюсь, это поможет вам.

+1

Это сработало для меня. Я изменил свой код на 'float heightForRow = tableView.rowHeight;' Это свойство возвращает высоту по умолчанию, если она не установлена. –

+5

Это не работает, поскольку cellForRowAtIndexPath: приводит к сбою, поскольку ячейки еще не существуют. Высота создается до создания ячеек. – Joey

+0

По моему мнению, это нехорошее решение, потому что, когда ячейки повторно используются, это может вызвать конфликт. –

1

смотрите этот код: -

- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section 
{ 
    if(section == theSectionWithoutARow) 
{ 
    if(shouldRemoveTheRow) 
     return [theArrayWithTheSectionContents count] - 1; 
    else 
     return [theArrayWithTheSectionContents count]; 
    } 
    // other sections, whatever 
    } 

    - (UITableViewCell *)tableView:(UITableView *)table cellForRowAtIndexPath:   (NSIndexPath *)indexPath 
    { 
     // blah blah standard table cell creation 

    id theCellObject; 

    if(indexPath.section == theSectionWithoutARow) 
    { 
    NSInteger theActualRowToDisplay = indexPath.row; 
    if(shouldRemoveTheRow && indexPath.row >= theRowIndexToRemove) 

    { 
     theActualRowToDisplay = indexPath.row + 1; 
    } 
    theCellObject = [theArrayWithTheSectionContents objectAtIndex:theActualRowToDisplay]; 
} 

// now set up the cell with theCellObject 

return cell; 
    } 

Надеется, что это поможет вам

+13

Возможно, самый грязный код, который я прочитал. – Osa

41

В СВИФТЕ вам нужно сделать две вещей,

  1. HIDE вашей клетку. (потому что может использоваться повторно используемая ячейка)

  2. Установить Высота ячейки до ZERO.

Посмотрите здесь,

  1. HIDE вас сотовый.

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
        let myCell:UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "cellID",for: indexPath) as! UITableViewCell 
    
        if(indexPath.row < 2){ 
         myCell.isHidden = true 
        }else{ 
         myCell.isHidden = false 
        } 
    
        return myCell 
    } 
    
  2. Набор Высота клетки к ZERO.

    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
        var rowHeight:CGFloat = 0.0 
    
        if(indexPath.row < 2){ 
         rowHeight = 0.0 
        }else{ 
         rowHeight = 55.0 //or whatever you like 
        } 
    
        return rowHeight 
    } 
    

С помощью этого вы можете удалить проблемы многократного использования клеток конфликта.

Вы можете сделать то же самое для cell? .tag также, чтобы скрыть конкретную ячейку по тегу.

+0

лучший ответ! –

+0

Когда я использую это, я получаю предупреждение: «Возможно, хотя бы одно из ограничений в следующем список - тот, который вы не хотите. Попробуйте это: (1) посмотрите на каждое ограничение и попытайтесь выяснить, чего вы не ожидаете; (2) найти код, который добавил нежелательные ограничения или ограничения и исправить его. « – DrPatience

+2

Я не понимаю, почему нужно скрыть ячейку? Как установить высоту в ноль, чтобы конфликтующие ячейки многократного использования? –

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