尽管使用dequeueReusableCell,如何仅隐藏特定单元格上的内容?

时间:2015-03-17 22:43:09

标签: ios uitableview swift

当我们跨越特定行数时,我想隐藏自定义单元格中的一些元素。我添加的行多于可见的行,因为我需要滚动到最后一行而没有弹跳效果。但是现在我有了更多的细胞,而且我不需要在行后的细胞> 13.

我尝试使用if else setNeedsDisplay单元格,但是dequeue ...方法对单元格有不良影响,当我向上滚动,回到之前的单元格时,它们不再有文本了,如行> 13.有没有办法使用dequeue方法,并让行的内容< 13,并删除行的内容> 13?

以下是一些代码:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var identifier = ""

    if tableView == self.tableView{
        identifier = "MyCell"
        let cell = tableView.dequeueReusableCellWithIdentifier(identifier) as MyCell
        if indexPath.row < 14 {
            cell.showContent = true
            cell.label.text = "test\(indexPath.row)"
        }
        else {
            cell.showContent = false
            cell.label.text = ""
            cell.addItem.text = ""
        }
        cell.setNeedsDisplay()
        return cell
    }


//MyCell
override func drawRect(rect: CGRect) {
if !showContent {
    label.text = ""
    addItem.text = ""
}
else {
    let path = UIBezierPath()//custom separator that should not be drawn for row > 13

由于

1 个答案:

答案 0 :(得分:1)

您不应该在drawRect中以这种方式修改文字。您已经修改了cellForRow中的标签。这就是你所需要的一切。

那就是说,这不是我怎么做的。我可能会创建一个具有自己的空单元标识符的不同单元格。这样他们就可以非常简单,你不必像cell.setNeedsDisplay()那样去除分隔线。所以在cellForRow中,只返回一种用于数据行的单元格,以及一种用于空行的不同类型的单元格。没有规则说所有单元都必须是同一类。