我使用以下代码更新我的tableView
void motorrun(AF_DCMotor *motor) {
motor->run(FORWARD);
}
motorrun(&motor1);
motorrun(&motor2);
但是当插入单元格和reloadData()时,滚动惯性将停止。
如何将whatsapp插入顶部以保持偏移并滚动惯性。
在前5秒,表格很短,当我快速向上滚动并指出时(如安卓滚动状态scroll_state_fling),更多内容插入顶部,同时可以保持偏移和滚动惯性,这太神奇了,我怎么能这样做?
答案 0 :(得分:0)
为了保持惯性,您需要确保一次调用数据的加载和重新加载。你必须放置一个布尔变量来停止加载多次被触发,比如
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav>
<ul class="menu">
<li><a href="">Home</a></li>
<li><a href="">Page 1</a></li>
<li><a href="">Page 2</a>
<ul class="submenu">
<li><a href="">Subpage 2a</a></li>
<li><a href="">Subpage 2b</a></li>
<li><a href="">Subpage 2c</a></li>
</ul>
</li>
<li><a href="">Page 3</a></li>
</ul>
</nav>
我发现使用tableView引入更多功能的最佳位置是var isLoadMore = true
func scrollViewDidScroll(_ scrollView: UIScrollView) {
//Load more cell
if tableView.contentOffset.y < 100, self.isLoadMore {
self.isLoadMore = false
let beforeTableViewContentHeight = tableView.contentSize.height
let beforeTableViewOffset = tableView.contentOffset.y
let moreDataArray = getAllMessages()
for message in moreDataArray.reversed() {
dataArray.insert(message, at: 0)
}
DispatchQueue.main.async {
self.tableView.reloadData()
self.tableView.layer.layoutIfNeeded()
let insertCellHeight = beforeTableViewOffset + (self.tableView.contentSize.height - beforeTableViewContentHeight)
let newOffSet = CGPoint(x: 0, y: insertCellHeight)
self.tableView.contentOffset = newOffSet
self.isLoadMore = true
}
}
}
方法。在此方法中,您可以检查indexPath而不是tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath)
。