2016-05-29 3 views
5

Ни одна статья не объясняет это явно в отношении моего запроса, у меня есть три ячейки в статической таблице, и я хочу скрыть вторую ячейку, когда пользователи нажимают на первую ячейку. Любая помощь приветствуется.Как спрятать определенные ячейки в статическом UItableview, в swift?

+0

Могу ли я узнать, почему это было проголосовано? – coolly

ответ

5

Хотя вы не можете остановить статическую таблицу от попыток показать ваши клетки, вы можете установить их высоту до нуля, что делает их фактически невидимы:

Добавить этот метод табличного класса вида контроллера делегата:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    let cell = super.tableView(tableView, cellForRowAtIndexPath: indexPath) 
    return cell == myHiddenCell ? 0 : super.tableView(tableView, heightForRowAtIndexPath:indexPath) 
} 
0

в методе didSelectCellAtIndexPath, вы можете установить высоту 0, чтобы скрыть:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    if indexPath.row == 0 { 
     let indexPath = NSIndexPath(forItem: 1, inSection : 0) 
     let secondCell = tableview.cellForRowAtIndexPath(indexPath) 
     secondCell.frame.size.height = 0; 
     self.view.layoutSubviews() 
    } 
} 

Если вы хотите анимацию, просто положить self.view.layoutSubviews() в способе анимации UIView UIView.animateWithDuration ... и т. Д.

0

Для меня установка высоты на 0 для некоторых ячеек и другая высота для других ячеек не была опцией, так как все мои ячейки имеют разную высоту.

Я создал другую ячейку в раскадровке и установил высоту строки 0 (в инспекторе размеров). Затем в коде я показываю ячейку с высотой = 0, если я хочу ее скрыть, если нет, я покажу другую ячейку:

if (hideCell) { 
      let hiddenCell = tableView.dequeueReusableCell(withIdentifier: "hiddenCell",for: indexPath) as! TheWallTableViewCell 
      return hiddenCell 
     } 
else { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "Cell",for: indexPath) as! TheWallTableViewCell 
     return cell 
} 
Смежные вопросы