隐藏静态tableview部分中的单元格

时间:2015-08-12 04:12:56

标签: ios swift uitableview

我试图做一些我希望过于简单化的事情,但它正在逃避我。我试图在tableview部分中显示\隐藏最后一个单元格。如果我为单元格创建了一个IBOutlet,并将其设置为隐藏,则分隔符不会完全覆盖该部分的底部。我在例子之前和之后都附上了。任何帮助,将不胜感激。

enter image description here

2 个答案:

答案 0 :(得分:0)

我认为你这样做的唯一方法是将tableview设置为Dynamic Prototypes(在IB中)。

每次尝试隐藏/显示单元格时,都应调用self.tableView.reloadData()

然后实施

var hide = false

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if( section == 1 ){
        return 3 + ( hide ? 0 : 1 )
    }
    else {
        return 1
    }
}

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var cell = self.tableView.dequeueReusableCellWithIdentifier(...) as ...
    cell.<textField>.text = ... 
    return cell
    }

答案 1 :(得分:0)

我用静态表格完成的方式是返回要隐藏的行的高度0。就我而言,我创建了一组索引路径,然后像这样实现它:

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    guard hiddenIndexPaths.contains(indexPath as IndexPath) else {
        return super.tableView(tableView, heightForRowAt: indexPath)
    }

    return 0
}

hiddenIndexPaths: Set<IndexPath>是表视图控制器上由代码管理的属性。由于它是静态表,因此您应该知道要隐藏的行的索引路径。如果已经有一个出口,则还可以检查该索引路径上的单元格是否为出口的那个,并以这种方式返回高度0。但是我个人认为索引路径设置比较容易。

您还需要确保该单元格已在界面构建器中启用了“限制范围”。