如何在swift中隐藏静态UItableview中的特定单元格?

时间:2016-05-29 21:10:15

标签: ios swift uitableview

没有文章清楚地解释我的查询,我在静态表中有三个单元格,我想在用户点击第一个单元格时隐藏第二个单元格。任何形式的帮助都表示赞赏。

3 个答案:

答案 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 
}