尝试在我的应用程序中实现可扩展单元时遇到很多问题。目前的问题是,尽管我的代码可以按预期方式扩展和折叠单元格,但它显示了在滑动删除内容时应隐藏的内容,这看起来很糟糕。

另一个问题是,当我点击导航按钮以从表视图中分离时,其中一个单元会展开。同样,在点击一个单元格时,似乎会松开顶部的分隔线,直到轻按另一个单元格为止。 (这些问题较小。提到的第一个问题较大。)

这是我在didSelectRowAtIndexPath中的代码:

var selectedRowIndex: NSIndexPath = NSIndexPath(forRow: -1, inSection: 0)

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    selectedRowIndex = indexPath
    tableView.beginUpdates()
    tableView.endUpdates()
}


这是我在heightForRowAtIndexPath中的代码:

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    cellHeight = 68
    if tableView != self.searchDisplayController?.searchResultsTableView {
        if indexPath.row == selectedRowIndex.row {
            if cellTapped == false {
                cellTapped = true
                cellHeight = 141
                return 141
            } else {
                cellTapped = false
                cellHeight = 68
                return 68
            }
        }
    }
    return 68
}


在cellForRowAtIndexPath中:

if cellHeight == 141 {
    cell.notesLabel.hidden = false
    println("False")
} else if cellHeight == 68 {
    cell.notesLabel.hidden = true
    println("True")
}


目前,此代码似乎使cell.notesLabel始终隐藏,因为在点击单元格时似乎未调用cellForRowAtIndexPath。

有没有人对此问题有解决方案或更好的实施方案?我敢肯定,必须有一种更简单的方法。

最佳答案

我会考虑研究自动调整大小的单元格。

tableView.estimatedRowHeight = 44.0
tableView.rowHeight = UITableViewAutomaticDimension


随着内容的更改,您必须重新加载单元并为其设置动画,但是我认为使用以下方法将是更好的实现:

reloadRowsAtIndexPaths(_ indexPaths: [AnyObject], withRowAnimation animation: UITableViewRowAnimation)


听起来您的手势很多,这可能是导致问题的原因。对于可拖动的单元格,请确保是平移手势正在更改其偏移量的contentView,或者如果您在视图中具有所有单元格的内容,请确保将其应用于该视图。

关于ios - 滑动删除即可显示应隐藏在单元格中的标签,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26393561/

10-12 01:15
查看更多