我试图做一些我希望过于简单化的事情,但它正在逃避我。我试图在tableview部分中显示\隐藏最后一个单元格。如果我为单元格创建了一个IBOutlet,并将其设置为隐藏,则分隔符不会完全覆盖该部分的底部。我在例子之前和之后都附上了。任何帮助,将不胜感激。
答案 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。但是我个人认为索引路径设置比较容易。
您还需要确保该单元格已在界面构建器中启用了“限制范围”。