UITableView 正在删除 iOS 11 中的行
UITableView Deleting rows in iOS 11
当我尝试删除行时,起初它表现得很好。但是,在 content size
首先小于 table 视图的 border
的情况下,当删除行时,整个 table 突然向上跳 1 行...
这是我的删除行操作,
override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
Results.remove(at: indexPath.row)
tableView.deleteRows(at: [indexPath], with: .automatic)
}
}
在ViewDidload
中我已经实现了下面的代码
self.tableView.estimatedRowHeight = 0;
self.tableView.estimatedSectionHeaderHeight = 0;
self.tableView.estimatedSectionFooterHeight = 0;
仅当内容的高度首先变小到边框时动画才会出错...之后动画也 运行 正确...
这里的 GIF 展示了正在发生的事情......
这是 iOS 11 中的错误吗?
好的,我终于找到了解决方案,看起来不错。我将下面的代码添加到删除操作中:
if(tableView.contentSize.height<=tableView.bounds.height+100.0 && tableView.contentSize.height>tableView.bounds.height) {
tableView.scrollToRow(at: IndexPath(row: 0, section: 0), at: .top, animated: true)
}
// The 100.0f is the cell height.
100.0f 是单元格的高度。所以当content的高度首先小于tableView的border时,tableview会滚动到最顶部,而glitch动画会被滚动动画覆盖。
当我尝试删除行时,起初它表现得很好。但是,在 content size
首先小于 table 视图的 border
的情况下,当删除行时,整个 table 突然向上跳 1 行...
这是我的删除行操作,
override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
Results.remove(at: indexPath.row)
tableView.deleteRows(at: [indexPath], with: .automatic)
}
}
在ViewDidload
中我已经实现了下面的代码
self.tableView.estimatedRowHeight = 0;
self.tableView.estimatedSectionHeaderHeight = 0;
self.tableView.estimatedSectionFooterHeight = 0;
仅当内容的高度首先变小到边框时动画才会出错...之后动画也 运行 正确...
这里的 GIF 展示了正在发生的事情...... 这是 iOS 11 中的错误吗?
好的,我终于找到了解决方案,看起来不错。我将下面的代码添加到删除操作中:
if(tableView.contentSize.height<=tableView.bounds.height+100.0 && tableView.contentSize.height>tableView.bounds.height) {
tableView.scrollToRow(at: IndexPath(row: 0, section: 0), at: .top, animated: true)
}
// The 100.0f is the cell height.
100.0f 是单元格的高度。所以当content的高度首先小于tableView的border时,tableview会滚动到最顶部,而glitch动画会被滚动动画覆盖。