当前位置:首页 > 移动端开发 > 正文内容

iOS开发- reloadData办法介绍

邻居的猫1个月前 (12-09)移动端开发1969

在实践开发中,常常需求对tableView或许collectionView履行更新数据源的操作,reloadData是一个常见的办法。这是 UITableViewUICollectionView 供给的一个办法,用于从头加载视图的一切可见行(或项)。

当调用 reloadData 办法时,UITableViewUICollectionView 会抛弃当时显现的一切Cell并从头恳求其数据源目标以获取新的Cell。这个进程触及以下进程:

  1. 重置UITableViewUICollectionView 会丢掉当时的一切Cell,并预备开端整个视图的新的布局进程。

  2. 问询数据源:数据源目标会被问询新的数据,包含部分数量、每部分的行数(关于 UITableView)或项数(关于 UICollectionView)。

  3. Cell创立或重用:关于视图中的每一个可见行或项,UITableViewUICollectionView 会经过调用数据源的 tableView:cellForRowAtIndexPath:collectionView:cellForItemAtIndexPath: 办法来获取一个Cell。假如有可重用的Cell,它会被重用;不然,会创立一个新的Cell。

  4. Cell装备:开发者在数据源办法中装备Cell,设置必要的数据和视图。

  5. 显现Cell:装备好的Cell会被添加到 UITableViewUICollectionView 中,并显现给用户。

reloadData 办法通常在以下情况下运用:

  • 数据源发生了改动,需求更新整个列表或网格。
  • 需求呼应某个事情,如用户操作或网络恳求完结,导致数据集更新。
  • 初始化或视图控制器的视图即将出现时,需求保证数据是最新的。

运用 reloadData 办法的缺陷是它会从头加载整个列表或网格,这可能不是功能最优的挑选,特别是当只要数据的一小部分发生改动时。在这种情况下,更细粒度的更新办法(如 insertRowsAtIndexPaths:withRowAnimation:deleteRowsAtIndexPaths:withRowAnimation:reloadRowsAtIndexPaths:withRowAnimation: 关于 UITableView,以及对应的 UICollectionView 办法)可能是更好的挑选,由于它们答应只更新改动的部分,而不是整个视图。

  • reloadData是异步履行的,假如有使命需求在数据加载结束后再履行,就需求运用dispatch_async,如:
@weakify(self);
    dispatch_async(dispatch_get_main_queue(), ^{
        @strongify(self);
        if (!self) {
            return;
        }
        //需求完成的代码
    });

可是不一定就会在reloadData完结后履行,由于在这里运用 dispatch_async 将一个 block 异步地派发到主行列。但由于 reloadData 也会在主行列上异步履行,这两个操作是独立的,而且都被异步地参加到主行列中,履行次序取决于它们被参加行列的时刻和行列的状况。

假如意图是保证 某一个使命 在 collectionView 彻底加载数据后履行,我现在想到的办法是运用运用 dispatch_after:

@weakify(self);
dispatch_time_t delayTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(100 * NSEC_PER_MSEC));
dispatch_after(delayTime, dispatch_get_main_queue(), ^{
    @strongify(self);
    if (!self) {
        return;
    }
    //履行使命代码
});

当然详细的时刻要根据实践情况组织,我这是100ms,基本上reloadData现已完结了。

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=483

分享给朋友:

“iOS开发- reloadData办法介绍” 的相关文章

FlutterApp实战·第01天:Flutter装置和装备

FlutterApp实战·第01天:Flutter装置和装备

Flutter装置文档: 官方文档:https://docs.flutter.dev/get-started/install 中文文档:https://flutter.cn/docs/get-started/install Dart晋级 Dart装置参阅前面文章(Dart装置和初体验):https:...

手机app开发制作公司,助力企业数字化转型

手机app开发制作公司,助力企业数字化转型

1. 应用公园 简介: 应用公园是一家专业级APP开发公司,提供5分钟快速生成高质量原生APP的服务,支持SaaS云、独立部署和源码交付。2. 易码帮科技 简介: 易码帮科技提供专业的手机APP软件开发服务,深耕行业多年,覆盖多行业APP开发案例,为企业开发APP软件...

ios开发者选项,功能、开启与关闭方法

ios开发者选项,功能、开启与关闭方法

要在iOS设备上开启开发者模式,您可以按照以下步骤进行操作:1. 打开设置: 在您的iPhone或iPad上,进入应用。2. 进入隐私与安全性: 在设置界面中,找到并点击选项。3. 找到开发者模式: 在界面中,滑动到底部,您会看到选项。点击进入。4. 开启开发者模式: 在界面...

穿越鸿蒙,华为鸿蒙系统的未来展望

穿越鸿蒙,华为鸿蒙系统的未来展望

“穿越鸿蒙”是一个富有想象力和哲学意味的表达,它通常指的是超越时空、物质和现实的界限,进入一个更为深邃、原始或超然的境界。在文学、艺术和哲学中,这样的表达经常被用来描述人类对未知、无限或宇宙本质的探索和追求。在文学作品中,“穿越鸿蒙”可能象征着主人公或诗人对现实世界的超越,进入一个全新的、神秘的精神...

魅族宣布接入鸿蒙系统,魅族宣布接入鸿蒙系统,开启全新生态融合之旅

魅族宣布接入鸿蒙系统,魅族宣布接入鸿蒙系统,开启全新生态融合之旅

魅族在2021年5月28日正式宣布接入华为的鸿蒙系统。根据魅族智享生活的官宣,魅族旗下的Lipro智能家居产品将率先接入鸿蒙系统,旨在提升产品的智能连接和使用体验。需要注意的是,目前这一接入鸿蒙系统的计划仅限于魅族智能家居产品,并不包括魅族手机和手表。这些设备仍然基于安卓系统。此次合作标志着魅族在智...

真我刷鸿蒙,真我手机刷鸿蒙,开启智能生活新篇章

真我刷鸿蒙,真我手机刷鸿蒙,开启智能生活新篇章

要将真我手机刷成鸿蒙系统,需要按照以下步骤进行操作。请注意,刷机有风险,操作不当可能会导致手机损坏或数据丢失,请谨慎操作。 准备工作1. 解锁Bootloader: 确保你的手机型号支持解锁Bootloader。支持解锁的机型包括但不限于realme X、realme X青春版、realme...