【发布时间】:2018-04-27 07:54:29
【问题描述】:
我正在创建一个聊天界面。
用户的消息被放入一个新的 UITable 视图单元格中。
当更新表格视图时,我使用以下代码。
extension UITableView {
func scrollToBottom() {
let rows = self.numberOfRows(inSection: 0)
if rows > 0 {
let indexPath = IndexPath(row: rows - 1, section: 0)
self.scrollToRow(at: indexPath, at: .bottom, animated: true)
}
}
}
其实这个效果好一点,但是有一点奇怪。
当我关闭应用重新打开,或者退出屏幕重新进入后,出现以下问题。
问题是当我添加一个新单元格时,它会上升到表格视图中的第一个单元格并返回到最后一个单元格。
查看问题(https://vimeo.com/266821436)
随着单元格数量的增加,滚动变得太快和太乱。
我只想不断更新新注册的最后一个单元格。
我该怎么办?
【问题讨论】:
-
如果出现键盘,您何时更改 tableView 的 inset?
-
你能在scrollToBottom中为索引路径放一些println吗?这将显示是否使用小于行数的索引调用它以及调用该方法的次数。此外,如果您使用事件触发它并在 viewWillAppear 上添加侦听器,请不要忘记在离开屏幕时将其删除。
-
@DanielAlexandrov 打印索引路径是正常出来的。而且我没有在 viewWillapear 或 viewdidappear 上使用事件监听器,viewdidload...
-
你如何更新你的数据源?
-
@DanielAlexandrov 以非常标准的方式更新。我在文本字段中写入并按 Enter 将文章添加到特定数组并重新加载表格视图。重新加载后,执行scrollToBottom方法。
标签: ios swift uitableview