首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

是否有可能在UITableView重新加载完成后获得回调?

在UITableView重新加载完成后,可以通过UITableViewDelegate中的方法tableView(_:didEndDisplaying:forRowAt:)来获得回调。这个方法会在每个cell从屏幕上消失时被调用,包括重新加载完成后的情况。你可以在这个方法中执行你想要的操作。

举个例子,假设你想在UITableView重新加载完成后打印一条日志,你可以这样实现:

代码语言:swift
复制
class ViewController: UIViewController, UITableViewDelegate {
    // ...
    
    func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) {
        if indexPath.row == tableView.numberOfRows(inSection: indexPath.section) - 1 {
            print("UITableView重新加载完成")
        }
    }
}

在这个例子中,我们通过判断最后一个cell是否消失来确定UITableView是否重新加载完成。当最后一个cell消失时,我们打印一条日志。

关于UITableView的更多信息,你可以参考腾讯云的产品介绍链接:UITableView产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

UITableView性能优化-中级篇

进阶篇 最近遇到一个需求,对tableView中级优化需求 要求 tableView 滚动的时候,滚动到哪行,哪行的图片才加载并显示,滚动过程中图片不加载显示; 页面跳转的时候,取消当前页面的图片加载请求...YYWebImage机制: 内部的YYCache会对图片进行数据缓存,以key:value的形式,这里的key = imageUrl,value = 下载的image图片 读取的时候判断YYCache中是否该...在下载完成的中?如果你在下载完成的时候再切割,此时 YYWebImage 缓存中的图片是初始图片,还是圆角图片?(终于等到3了!!)...答: 如果是下载完,在中进行切割圆角的处理,其实缓存的图片是原图,等于每次取的时候,缓存中取出来的都是矩形图片,每次set都得做切割操作; 问: 那是否有解决办法?...答:其实是有的,简单来说YYWebImage 可以拆分成两部分,默认情况下,我们拿到的,是走了 download && cache的流程了,这里我们多做一步,取出cache中该url路径对应的图片,

1.5K20

iOS学习——tableview中带编辑功能的cell键盘弹出遮挡和收起问题解决

@property (assign, nonatomic) BOOL isHiddenLine; //是否隐藏分割线 //编辑结束时的 @property (copy, nonatomic)...ContentEditResultBlock contentEditResultBlock; //编辑开始时的 @property (copy, nonatomic) ContentStartEditBlock...contentStartEditBlock; @end   在这里,我们定义了两个block,分别在编辑区域开始编辑(textFieldDidBeginEditing: )和结束编辑(textFieldDidEndEditing...主控制器中对自定义cell的应用,首先,我们再主控制器中定义几个属性来保存我们键盘弹出时tableview的contentOffset以及当前编辑cell的frame,然后在应用自定义cell时设定我们的两个...block,当开始编辑时,通过block传的frame参数设置对应的editFrame。

3.9K80

deleteSections & deleteRows 我踩的坑

需求背景 ---- 有这样一个需求,一个用来展示商品的列表,你可以从别的数据源添加过来,能添加当然就能删除了,这时候就用到了UITableView/UICollextionView组或者cell...2、点击删除 index 然后在数据源中按照 index 找到数据删除掉。...要是你再这样这个index做操作,然后删除数组元素中的某一位置的元素,保证和剩下的section个数是一样的,但是不刷新TableView ,会发生什么呢?...那就是给我们调回来的 index 一个不越界的正常的值,我们从这点出发,我们在不执行reloadata的情况下回一个正常的index应该也能解决问题,那有什么办法一个正常的index呢?...oc也是指针),并没有重新赋值,这时候我们就可以在 model 里面写一个 IndexPath 进去,然后在每一次删除完之后我们自己操作在数据源中重新排列这个model中的indexPath ,在删除点击的时候直接回这个

1.8K30

竭尽全力的去解耦的一次实践,封装一个TableView和一些功能组合的控件

从这个Demo里可以看到Controller和View还有Store的头文件里没有任何Delegate,Block,只有初始化和更新ViewModel的方法。...当触发到UITableView这个配置Cell的时,通过对ViewModel的键值的监听就能够在任何地方对Cell进行配置了,而不用通过繁琐的Delegate和Block来层层调了。...,其它地方也用同样的方法进行了处理,比如说对新出现消息提示点击使其消失只需要设置ViewModel里的isHideHintView的值的处理,还有对请求不同状态显示不同引导页,只要是以前需要通过接口和的全部干掉...Side //--------------------------- @property (nonatomic, assign) BOOL isHideGuideView; //是否显示...guide view @property (nonatomic, assign) BOOL isHideHintView; //是否显示hint view //下拉刷新上拉加载更多

62300

更轻量的 View Controllers

这样,你的 view controller 就可以在之后通过使用回(比如一个 completion 的 block)来请求网络了。这样的好处是,缓存和错误控制也可以在这个类里面完成。...有些人认为 IB 只能和 view controllers 一起使用,但事实上你也可以加载单独的 nib 文件到自定义的 view 中。...关于 view controllers 和 model 对象之间的消息传递,已经很多阐述得很好的技术(比如 KVO 和 fetched results controllers)。...这样的好处是消息传递都在一个地方(被观察的对象)进行,而且我们也不用纠结嵌套的 delegate 。这其实是一个复杂的主题,我们可能在未来用一个完整的话题来讨论这个主题。...我们并不是想把这些技术应用到每一个可能的角落,只是我们一个目标:写可维护的代码。知道这些模式后,我们就更有可能把那些笨重的 view controllers 变得更整洁。

54520

AsyncDisplayKit 2.0 教程:入门「译」

image.png 智能预加载 你在工作中是否曾经遇到需要预先加载内容到 scrollView 或者 pageView 控制器中?...利用好已有的组件,如:ASNetworkImageNode 和 ASTextNode,通常来说你将会获得极大的便利。 注意: 件不明显的事,这些 Ranges 不是堆栈的。...Node接口的状态 你可能会疑惑:这些 Ranges 是如何正确工作的?...这就是接口的状态。 Node 命名 为了看到一个 node 的各种状态,给它命名时很有必要的。这样,你就可以监测每个 node 的数据加载、内容成、屏幕展示以及所以的事情。...智能预加载(续) 在 2.0 版本中,已经介绍了多个维度上智能与加载的概念。假设你一个竖直滚动的tableView,在其中某些Cell包含了水平滚动的 collectionView。

2.1K20

优雅的处理网络数据,你真的会吗?不如看看这篇.

那么我们该怎么去提高用户体验,保证用户没有漫长的等待感,还可以轻松自在的享受等待,对加载后的内容明确的预期呢?...来显示返回的数据,在 viewDidLoad 中先请求网络数据来获取一些初始化数据,然后再利用 UITableView 的 Prefetching API 来对数据进行预加载,从而来实现数据的无缝加载...正常情况下,我们在构建 UITableView 这个控件的时候,需要对它的行数(numsOfRow)做一个初始化,这个行数对我们实现无限加载和无缝加载是一个很关键的因素,假设我们每次根据服务端返回的数据量去更新...UITableView 的行数并 Reload,那我之前说的 Prefetching API 在这种情况下就失去作用了,因为它起作用的前提是要保证预加载数据时 UITableView 当前的行数要小于它的总行数...if let dataloader = viewModel.loadImage(at: indexPath.row) { // 2.1 添加图片下载完毕后的

1.4K20

iOS的MVC框架之控制层的构建(下)

这部分代码只是简单封装了对服务端URL的请求,同时通过一些报文转数据模型的第三方框架直接将报文转化为数据模型并通过异步的形式回吐给控制器或者视图。...不同代码的构建时机 控制器类是一个功能的调度总控室,而且他还通过模板方法的设计模式提供给了我们在控制器的生命周期内各阶段事件发生时的处理。...那么是不是要将所有的对象的创建都采用懒加载的形式进行创建? 答案是否定的。...如果因为某些原因使得我们的控制器里面的所有视图都需要重新创建(比如换肤)时那么就有可能导致这个懒加载的视图不会再次被创建而产生界面上莫名其妙的问题。...//如果容器控制器重载这个方法返回NO时那么容器控制器就可以手动的让子视图控制器执行对应的呈现方法。

4.4K30

窥探Swift之协议(Protocol)和委托代理(Delegate)的使用

》等博客内容中都用到的Delegate。...今天就结合两个实例来窥探一下Swift中的协议与Delegate(委托代理)。本篇先给出CocoaTouch中常用控件UITableView的常用回,并以此来认识一下的使用方式。...紧接着会给出如何去实现自己的Delegate,即在自定义控件中去实现委托代理。言归正传,开始今天的博客主题。   ...一.从UITableView中来窥探协议的委托代理     UITableView这个高级控件在iOS开发中的出镜率是比较高的,今天的重点不是介绍如何使用UITableView, 而是让通过UITableView...如果你对UITableView控件不熟的话,完全可以跳过这一部分,直接进入第二部分。如果你要更好的理解Delegate委托,还是很有必要看这一部分的。

3.4K80

iOS流布局UICollectionView系列一——初识与简单使用UICollectionView

支持水平和垂直两种方向的布局 2、通过layout配置方式进行布局 3、类似于TableView中的cell特性外,CollectionView中的Item大小和位置可以自由定义 4、通过layout布局的代理方法...0); 我们可以分析:因为UICollectionView是iOS6.0之前的新类,因此这里统一了从复用池中获取cell的方法,没有再提供可以返回nil的方式,并且在UICollectionView的代理中...上面的设置完成后,我们来实现如下几个代理方法: 这里与TableView的方式十分类似 //返回分区个数 -(NSInteger)numberOfSectionsInCollectionView:(...//将某一item取消选中 - (void)deselectItemAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated; //重新加载数据...- (void)reloadData; //下面这两个方法,可以重新设置collection的布局,后面的方法多了一个布局完成后,iOS7后可以用 //使用这两个方法可以产生非常炫酷的动画效果

2.8K20

iOS App启动过程

图中,虚线之上的部分是out-of-process的,在App下载安装和版本更新的时候会去执行,out-of-process会做如下事情: Rebase 和 Bind 两种主要的技术来保证应用的安全:...App启动的时候,程序会被影射到逻辑的地址空间,这个逻辑的地址空间一个起始地址,而ASLR技术使得这个起始地址是随机的。如果是固定的,那么黑客很容易就可以由起始地址+偏移量找到函数的地址。...这就保证了在dyld进行加载的时候,可以对每一个page进行独立的验证。 mach-o中有很多符号,指向当前mach-o的,也有指向其他dylib的,比如printf。...Dyld 在 bind 操作结束之后,会发出 dyld_image_state_bound 通知,然后与之绑定的函数 map_2_images 就会被调用,它主要做以下几件事来完成 Objc Setup...下面是一些方法的执行顺序,initialize的顺序可能在更早,但总是会在load和launch之间。 程序启动逻辑 最后 dyld 会调用 main() 函数。

2.1K30

一个多UITableview的左右滑动简单解决方案

前言 本文源自实际开发中的需求,核心的要求几个: 1、多个UITableview要支持左右滑动; 2、点击Tab也要有UITableview的滑动切换效果; 3、每个UITableview单独的下拉刷新和上拉加载...CGSizeMake(self.view.width * 4, 0); // 写0,关闭vertical的滚动 viewWithTag 具有传递性 代码中存在5个UIScrollView,其delegate都统一到...解决办法:判断对应UIScrollView是否为容器UIScrollView,再进行viewWithTag,并深入理解下viewWithTag的意义。...我思考的依据是view一个层级树,vc也同样一个层级关系。那么vc在决定是否偏移scrollview的时候,同样需要一层层询问vc。只要有一层vc想要偏移,那么就要偏移。...总结 多UITableview的VC本身已经上万行代码,散布在十几个Category里面。相对于老代码的迁移,这次新增一个左右滑动功能的代码简直是微不足道。

2.7K71

jQuery onload与ready

在jQuery中,两个常用的事件处理方法,即$(document).ready()和$(window).on("load", function()),用于在页面加载时执行JavaScript代码。...它是在DOM(文档对象模型)加载完成时触发,表示文档已经准备好进行操作。可以将要执行的JavaScript代码包裹在该方法的函数中,以确保代码在DOM就绪后执行。...示例代码如下:$(document).ready(function() { // 在DOM就绪后执行的代码 // 可以进行DOM操作、事件绑定等});在上述示例中,函数中的代码将在DOM加载完成后执行...示例代码如下:$(window).on("load", function() { // 在整个页面加载完成后执行的代码 // 可以进行依赖于资源加载的操作});上述示例中的函数中的代码将在整个页面加载完成后执行...执行顺序:$(document).ready()方法可能在某些资源(如图像)加载完成之前触发,而$(window).on("load", function())方法将等待所有资源加载完成后才触发。

73220

【IOS开发基础系列】Table View开发专题

下手动打印UITableViewCell的宽度是320高度是44         因为在iOS5的时候, 默认Cell就是320宽(那阵屏幕就是那么宽,然后高度是44) 现在是在layoutSubViews 重新绘制这个...后,代理顺序如下  1: //返回cell个数 - (NSInteger) tableView: (UITableView *)tableView numberOfRowsInSection: (NSInteger...这个例子中,layer并不会显著影响性能,但如果layer透明,或者圆角、变形等效果,就会影响到绘制速度了。解决办法可参见后面的预渲染图像。 2.4.1.4 不要做多余的绘制工作。      ...例如每次载入50条信息,那就可以在滚动到倒数第10条以内时,加载更多信息: - (void) tableView: (UITableView *)tableView willDisplayCell: (...        updating = YES;         [self update];     } } // update方法获取到结果后,设置updating为NO 还有一点要注意的就是当图片下载完成后

31720

客户端骨架屏详解

对于菊花图我们自不必多说,现在对于加载的设计体验了比菊花加载体验更棒的方法,即大家常看到的Skeleton Screen Loading,中文叫做骨架屏。...所谓Skeleton Screen Loading,即表示在页面完全渲染完成之前,用户会看到一个占位的样式,用以描绘了当前页面的大致框架,加载完成后,最终骨架屏中各个占位部分将被真实的数据替换。...关闭显示占位的时候,将代理tableView的代理切ViewController,正常显示。 特点 不需手动写占位控件,不需处理圆角等问题,占位效果与实际控件布局一致。...缺点是有的控件是自适应大小,在未获得数据之前,控件位置是错误的,导致占位效果有问题。...例子 - (UITableView *)mainTV { if (!

3.9K10

iOS开发之表视图爱上CoreData

,在viewDidLoad中添加 1 2 //注册,使同步生效 self.fetchedResultsController.delegate = self; ​     c.添加相应的委托的方法...,我们可以到Help中的API中去复制, 查询NSFetchedResultsControllerDelegate,找到相应的代码复制过来然后再做简单的修改即可, 实现的方法代码如下: 1 2...object at the given index path in the fetched results controller.  */   //当CoreData的数据正在发生改变是,FRC产生的...withRowAnimation:UITableViewRowAnimationFade];             break;     } }   //当CoreData的数据完成改变是,FRC产生的...添加下面的方法,用代码进行跳转,代码如下: 1 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath

2.1K80

iOS 仿支付宝银行卡界面(支持Swift和OC)

为了实现相应的功能,仿照支付宝的银行卡卡包开发出相应的页面,页面长这个样子: 二:说明目录 创建钱包视图容器WalletView 初始化WalletView并加载钱包头部视图walletHeader 在钱包视图中重新加载卡片视图...在钱包视图中实现添加卡片方法 在钱包视图中实现卡片展示和隐藏方法 创建卡片视图ColoredCardView继承于CardView 在CardView中实现点击手势展示隐藏卡片 导入项目使用介绍...在钱包视图中重新加载卡片视图 在钱包视图中重新加载卡片视图,在这里为了灵活修改方便使用,页面布局可以自定义,Demo中模仿支付宝页面进行设计,在CardView视图中,主要实现页面的交互等功能,具体的UI...在钱包视图中实现卡片展示和隐藏方法 在钱包视图中实现卡片展示和隐藏方法,在展示状态下,需要隐藏掉添加卡片按钮,禁止继续添加卡片,并且显示卡片详细设置内容和删除按钮。...(presentedCardView) } } 在ViewController中实现功能,代码如下: walletView.didPresentCardViewBlock = {

1.4K20
领券