gpt4 book ai didi

ios - UITableView - reloadRows 方法创建奇怪的滚动错误

转载 作者:行者123 更新时间:2023-11-29 05:36:20 25 4
gpt4 key购买 nike

我在我的一个应用程序中使用UITableView。在 tableview 的行内,我有水平滚动 UICollectionView。每当用户双击 Collection View 的单元格时,它会将事件发送回 View Controller 以更新数据源。更新数据源后,我使用以下命令重新加载该特定行: tableView.reloadRows(at: [IndexPath(row: index, section: 0)], with: .none) 但我遇到了奇怪的滚动错误.

我想重新加载tableview的行及其内容,即collectionview的内容,没有任何动画或滚动问题。

我尝试了以下解决方案来避免这种情况,但没有成功:(

UIView.performWithoutAnimation {
self.tableView.reloadRows(at: [IndexPath(row: index, section: 0)], with: .none)
}

我什至尝试记住 TableView 和 Collection View 的内容偏移量,但闪烁仍然存在。如果您遇到过此类问题,请指导我

最佳答案

这是一个 UI 布局问题。当您重新加载单元格/部分时,它会重新计算其内容大小,因此您的 tableView 内容大小特别是如果您有动态大小的单元格。我建议两个解决方案

解决方案一(Hacky):

  • 保存当前 View 在重新加载状态之前的 TableView 内容偏移量,然后在重新加载过程后滚动到它,没有动画

解决方案二(更好):

  • 直接更新数据源及其绑定(bind)单元格,而无需重新加载 UITableView(可以考虑更新 UICollectionView - 除非它是动态获取的,否则您需要为 UITableViewCell 高度设置动画)。

关于ios - UITableView - reloadRows 方法创建奇怪的滚动错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57004744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com