当我们跨越特定行数时,我想隐藏自定义单元格中的一些元素。我添加的行多于可见的行,因为我需要滚动到最后一行而没有弹跳效果。但是现在我有了更多的细胞,而且我不需要在行后的细胞> 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
由于
答案 0 :(得分:1)
您不应该在drawRect
中以这种方式修改文字。您已经修改了cellForRow中的标签。这就是你所需要的一切。
那就是说,这不是我怎么做的。我可能会创建一个具有自己的空单元标识符的不同单元格。这样他们就可以非常简单,你不必像cell.setNeedsDisplay()
那样去除分隔线。所以在cellForRow中,只返回一种用于数据行的单元格,以及一种用于空行的不同类型的单元格。没有规则说所有单元都必须是同一类。