Как скрыть определенные ячейки в статическом UItableview, в swift?
никакая статья не объясняет это ясно относительно моего запроса, у меня есть три ячейки в статической таблице, и я хочу скрыть вторую ячейку, когда пользователи нажимают на первую ячейку. Любая помощь приветствуется.
3 ответов
хотя вы не можете остановить статическую таблицу от попытки показать свои ячейки, вы можете установить их высоту на ноль, делая их фактически невидимыми:
добавьте этот метод в класс делегата контроллера представления таблицы:
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
let cell = super.tableView(tableView, cellForRowAtIndexPath: indexPath)
return cell == myHiddenCell ? 0 : super.tableView(tableView, heightForRowAtIndexPath:indexPath)
}
на 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 (в инспекторе размеров). Затем в коде я показываю ячейку с height = 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
}