没有文章清楚地解释我的查询,我在静态表中有三个单元格,我想在用户点击第一个单元格时隐藏第二个单元格。任何形式的帮助都表示赞赏。
答案 0 :(得分:9)
虽然您无法阻止静态表尝试显示您的单元格,但您可以将其高度设置为零,使它们实际上不可见:
将此方法添加到表视图控制器委托类:
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
let cell = super.tableView(tableView, cellForRowAtIndexPath: indexPath)
return cell == myHiddenCell ? 0 : super.tableView(tableView, heightForRowAtIndexPath:indexPath)
}
答案 1 :(得分: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
......等等
答案 2 :(得分:0)
对我来说,将某些单元格的高度设置为0而其他单元格的高度设置为另一个高度并不是一个选项,因为我的所有单元格都有不同的高度。
我在Storyboard中创建了另一个单元格,并将行高设置为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
}