首页 > 其他分享 >tableview没有滚动到顶部CGPoint.zero,出现错位的现象

tableview没有滚动到顶部CGPoint.zero,出现错位的现象

时间:2025-01-17 22:44:28浏览次数:1  
标签:CGPoint 滚动 tableview tableView 顶部 self zero

 

需求:分页请求列表数据,点击搜索,重置请求参数,从第一页开始请求20条数,

产生的bug 是 tableview在不滚动的时候,设置滚动到顶部正常,但是在tv 上下滚动的时候 ,接口数据返回,这时候要1.tv 清空数据,滚动到顶部   2.滚动到顶部,再清空数据,然后赋值接口数据,刷新列表,会出现tv没有滚动到顶部产生错位现象

原因:下边两行代码的原因,运行时 mode 冲突,导致两个动画执行出现冲突

self.tableView.setContentOffset(CGPoint.zero, animated: false)

tableView.reloadData()

 

解决办法:

点击按钮的时候(请求之前)需要执行代码:

                ///tv立即停止滚动

                self.tableView.setContentOffset(self.tableView.contentOffset, animated: false)

在请求结果回来后执行:

            if self.searchTuple.currentPage == 1 {
                        self.recordsArr.removeAll()
                        /**
                         * 需要的效果: 立即刷新,保证下次的新数据从顶部开始显示
                         * 不能使用tableView.setContentOffset(CGPoint.zero, animated: false): 因为他和最后执行的tableView.reloadData() 直接导致tableview没有滚动到顶部CGPoint.zero,出现错位的现象
                         */
                        self.tableView.reloadData()
}

self.recordsArr += aData.records

                    ///刷新数据: 必须在下边主线程执行
                    DispatchQueue.main.asyncAfter(deadline: DispatchTime.now()) {
                        self.tableView.reloadData()
                    }
                    

 

标签:CGPoint,滚动,tableview,tableView,顶部,self,zero
From: https://www.cnblogs.com/qingzZ/p/18677764

相关文章

  • go项目zero中自定义sdk的引用与使用规范
    在Go项目中,`gomodtidy`命令会自动删除没有直接引用的依赖。如果你的项目中某个SDK被引用但是没有在业务代码中直接使用,`gomodtidy`可能会将其清理掉,因为它被认为是"未使用"的依赖。如果你希望保留这些依赖(例如某些SDK),可以采取以下几种方法:###1.显式调用SDK中......
  • 高性能、零内存分配的Go日志库--Zerolog
    简介Zerolog是一个高性能、零内存分配的Go日志库。它为不需要垃圾回收的延迟敏感型应用程序提供结构化日志记录功能。您可以以完全零分配的方式使用,这样在初始化记录器对象后,堆上不会再分配其他对象,从而防止触发垃圾回收。Zerolog包提供了一个专用于JSON输出的快速而简......
  • Code、RO Data(ReadOnly Data,只读数据)、RW Data(ReadWrite Data,可读写数据)和ZI Data(Zero
    类别定义与功能位置生命期实例Code编译器生成的机器指令ROM区从编译到执行始终存在C语言函数体ROData程序中的只读数据ROM区从编译到执行始终存在const关键字定义的变量RWData初始化为非0值的可读写数据程序存储时位于ROM区,运行时位于RAM区程序存储时位于ROM区,运行时加载到RA......
  • Oracle SQL每日一问之ORA-01723:zero-length columns are not allowed
    我:CREATETABLETABLE_1PARALLEL8ASSELECT/*+parallel(8)*/t1.emp_no,NULLemp_nameFROMtemp1t1;[AI机器人bot:]在你的SQL语句中,错误"zero-lengthcolumnsarenotallowed"可能是由于在创建表时没有为`NULLclct_flag`指定数据类型。即使在`CREATETAB......
  • 让我们一起用Pygame Zero 画圆形(空心圆圈、实心圆、多个小球、多层同心圆、随机颜色同
    让我们一起用PygameZero画圆形(空心圆圈、实心圆、多个小球、多层同心圆、随机颜色同心圆、有渐变效果填充圆)本文目录:零、时光宝盒一、绘制空心圆圈二、绘制实心圆三、画多个静止小球四、绘制多层同心圆4.1、绘制5层同心圆4.2、绘制20层同心圆​4.3、绘制条纹相间......
  • go-zero使用自定义模板实现统一格式的 body 响应
    前提go环境的配置、goctl的安装、go-zero的基本使用默认都会需求go-zero框架中,默认使用goctl命令生成的代码并没有统一响应格式,现在使用自定义模板的方式实现统一响应格式:{"code":0,"msg":"OK","data":{}}步骤1、下载模板goctltemplateinit下载完......
  • gozero实现对接开放平台分贝通中新建费用报销的sdk设计与解决方案
    使用GoZero框架来实现费用报销对接CRM系统的SDK设计和解决方案,可以分为以下几个步骤。GoZero是一个Go语言编写的高性能Web框架,具有丰富的功能,适用于构建API服务。下面是如何使用GoZero来实现费用报销管理系统的API,并与CRM系统对接的方案。###一、准备工作......
  • DeepSpeed训练得到checkpoint如何像Huggingface模型一样评测evaluation?zero_to_fp32.p
    DeepSpeed训练得到checkpoint如何像Huggingface模型一样评测evaluation?具体步骤首先看一个样例:这是我用open-instruct框架,使用DeepSpeed训练1728个steps得到的一个checkpoint。请注意,下文我演示用的例子是基于step_1152,主要方法和step_1728这个名字没有任何区别。在使......
  • 进程间通信组件ZeroMQ详解
    在一些复杂的项目中,往往会由不同功能的程序组成,且在程序运行期间,各个程序还需要进行互相通信,实现进程间通信的方式有很多种,最常用的就是通过消息中间件,比如RabbitMQ,Kafka,以及ZeroMQ等,而RabbitMQ和Kafka这两款中间件往往都需要独立安装步骤才能使用,ZeroMQ却不需要独立安装部署,而是......
  • 【论文带读】LLMs as Zero-shot Graph Learners: Alignment of GNN Representations w
    目录:TEA-GLM(TokenEmbedding-AlignedGraphLanguageModel)(NeurlPS2024)1背景介绍1.1GNN的局限性1.2LLM解决Graph问题的方案1.3LLMs与GNN结合中的关键问题1.4文章贡献2方法2.1模型框架2.2GNN的对比学习2.2.1GNN的实例对比学习2.2.2GNN的特征对比学习2.3......