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

Swift UITableView / UICollectionVIew将数据传递到cellForRowAt中的单元格时返回空

Swift中的UITableView和UICollectionView是用于展示列表和网格视图的UI控件。在使用这些控件时,我们需要将数据传递给cellForRowAt或cellForItemAt方法中的单元格进行显示。如果在传递数据时遇到返回空的问题,可能有以下几个原因:

  1. 数据源为空:首先要确保数据源不为空。在使用UITableView或UICollectionView之前,需要先准备好数据源,例如一个数组或字典,其中包含要显示的数据。
  2. 数据源与单元格的绑定问题:在cellForRowAt或cellForItemAt方法中,需要将数据源中的数据与单元格进行绑定。这可以通过设置单元格的属性或调用单元格的方法来实现。确保将数据正确地传递给单元格。
  3. 单元格重用机制:UITableView和UICollectionView使用了单元格重用机制,即只创建足够数量的单元格来填充屏幕,当滚动时会重用之前滚出屏幕的单元格。因此,在cellForRowAt或cellForItemAt方法中,需要处理单元格的重用。可以使用重用标识符来标识不同类型的单元格,并根据标识符从重用队列中获取或创建单元格。
  4. 单元格的数据更新时机:如果数据源在单元格显示之前被更新,可能会导致传递给cellForRowAt或cellForItemAt方法的数据为空。确保在更新数据源后,调用UITableView或UICollectionView的reloadData方法来刷新列表或网格视图。

综上所述,当UITableView或UICollectionView在传递数据到cellForRowAt或cellForItemAt方法中的单元格时返回空,需要检查数据源是否为空、数据源与单元格的绑定是否正确、处理单元格的重用机制以及数据更新时机是否正确。

相关搜索:无法将正确的数据从嵌入在UITableView中的UICollectionView发送到ViewController Swift3将数据从TableViewController传递到控制器单元格中的视图将“正确”的数据从UITableViewController中的选定单元格传递到ViewController如何将数据传递到UIView中的嵌入式UIViewController - Swift 5将数据从tableview传递到Swift选项卡栏中的视图控制器将数据帧传递到结构化流中的UDF时出错Angular:如何将数据传递到组件中表中的特定单元格将数据从tabbar控制器传递到swift和xcode中的视图控制器将数据从前一个请求中获取的数据传递到下一个POST请求[Swift / SwiftUI]如何使用Swift将tableview单元格选择的索引数据存储到Userdefault中,并将其用于上一页的tableview单元格?将JSON数据从HTTP请求传递到Swift 3中的另一个视图控制器如何在使用安全资产功能时将图像从数据库传递到laravel中的视图通过props将数据从父组件传递到子组件时,数据在子组件的挂接挂接中显示为未定义在使用函数修饰时,如何将App数据传递到actix-web中的服务路由处理函数?将数据成员数组传递到递归过程中时,是否会在每个堆栈帧中创建该数组的新副本?如何将数据从一个游乐场页面传递到Swift游乐场中的另一个游乐场页面?尝试将模拟数据传递到函数组件并迭代数组以显示跨度中的属性时,得到的类型错误无法访问模拟数据在使用Axios获取数据时,如何使用ReactJs中的history.push将数据数组从一个组件传递到另一个组件
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS14开发-UIView

子 View 的顺序和子 View 返回的数组中的位置有关(storyboard 中左侧的树形结构图中的先后顺序)。...} } 静态单元格 需要使用 UITableViewController。 直接在 storyboard 中布局,不需要使用数据源方法,但如果需要使用到代理方法,仍然需要在控制器中实现相应的方法。...UITableViewDiffableDataSource 在 iOS 13 中引入了新的 API — Diffable Data Source,它不仅能够驱动 UITableView 和 UICollectionView...apply(_:animatingDifferences:):当要显示或更新数据时,通过调用 NSDiffableDataSourceSnapshot 对象的 apply 方法将其提供给数据源,该方法将比较当前显示的快照...iOS 14 中 UICollectionView 的功能得以继续增强,可以在一定程度上替换 UITableView。

11.9K10
  • 手把手带你撸一个网易云音乐首页(二)

    Model 在上一篇文章中,我们已经确定了获取数据源的接口,接下来就是如何去请求数据了?...iOS 原生或第三方开源库有许多可以在 Swift 中解析 JSON 的方式,你可以使用你喜欢的那个,例如 SwiftyJSON,HandyJSON 等,在这个工程中,我坚持使用原生的 Codable...我们将创建 12 个不同的 Sections,分别是: Banner 圆形按钮 推荐歌单 个性推荐 精选音乐视频 雷达歌单 音乐日历 专属场景歌单 云贝新歌 播客合辑 24小时播客 视频合辑 因为我们获取到的数据都不是同一格式的...当然在 Swift 中要实现多种类型并且可以轻松切换,最好的方式还是使用枚举,那么就让我们开始构建 ViewModel 吧!...{ var sections = [HomeViewModelSection]() } 首先,我们先初始化 ViewModel,将获取到的数据存储到数组中: /// 首页 ViewModel

    1.4K20

    WWDC20中iOS的改变

    data sources介绍的是数据源方面的工作 值得一提的是,UICollectionView的升级是2019年开始的,所以20的分享更多的在19的基础上,对这方面感兴趣的同学可以从19开始看,这里推荐一篇文章...在刷新数据源时,只要重新计算diff,计算进行局部刷新,可以大大提高UICollectionView的性能。...PencilKit可让您轻松快捷地将手绘内容整合到iOS或macOS应用中。...4.Catalyst Catalyst是能够将iOS应用程序引入macOS的基础架构,这些年,很多的iOS的app开始尝试跨平台开发,事实上,Catalyst也在不断的改进,今年也将更多iOS的库或者对应的功能加入到...今年的API增加了Catalyst对在iOS中处理物理键盘事件的支持,这对设备的用户行为上报是个利好消息,此外,tvOS的焦点引擎API现在可用于Mac Catalyst中的应用程序,UICollectionView

    1.8K10

    iOS 面试策略之系统框架-UIScrollView及其子类

    可能原因是大量的操作或耗时的计算阻塞主线程。 数据源问题。可能原因是网络请求太慢,不能及时得到相应数据;也有可能是需要更新的数据太多,主线程一时处理不过来。 然后我们针对三个问题,分别去进行优化。...建议将网络端数据缓存并存储在手机端,将取得部分数据根据优先级进行顺序渲染,还可以优化服务器端的实现来优化网络请求。...举个例子,假设 Threshold 是 0.7,每个屏幕展示 10 个 cell,每次加载 10 个 cell 的数据,当浏览到第 28 个 cell 时,由于会加载第 40 到第 50 个 cell...的数据,可是我们之前加载的第 30 到第 40 个 cell 的数据还没有被访问。...解决方法是将 Threshold 变成一个动态的值,随着数据的增长而增长。

    2.7K21

    iOS小经验:UITableView&UICollectionView设置单元格的默认选中状态

    场景需求 一个表格视图(或者宫格视图)中,当一个单元格被选中时设置彩色样式,选中其它单元格时设置灰色样式。 2. 一个思路 通过实现选中和非选择的代理,以在适当的时机进行UI更新操作。 3....:(NSIndexPath *)indexPath; 3.2 代码设置默认选中状态 (要等数据加载完成之后再调用) 执行方法的主体:tableview对象 //选中 - (void)selectRowAtIndexPath...// animate between regular and selected state 注意的是: 这种方法改变cell的选中状态时,当通过屏幕点击选中其它cell的时候,UITableView并不会执行...cell的时候,UITableView并不会执行- (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath...手动执行代理 上述两张方案的区别在于,设置选中状态完后,屏幕点击其它cell时,一个执行原cell的didDeselect方法,一个不执行。

    3.6K50

    【IOS开发基础系列】UICollectionView专题

    1 定义 1.1 什么是UICollectionView         UICollectionView是一种新的数据展示方式,简单来说可以把他理解成多列的UITableView(请一定注意这是UICollectionView...最简单的UICollectionView就是一个GridView,可以以多列的方式将数据进行展示。...但值得注意的时,在UICollectionView中,不仅cell可以重用,Supplementary View和Decoration View也是可以并且应当被重用的。...关于详细的自定义UICollectionViewLayout和一些细节,我将写在之后一篇笔记中。         ...需要注意根据滚动方向不同,header和footer的高和宽中只有一个会起作用。垂直滚动时section间宽度为该尺寸的高,而水平滚动时为宽度起作用,如图。

    91530

    Swift| 基础语法(五)

    前言 总结下 swift下的基础语法,里面涉及到:常量&变量、Swift中的数据类型、逻辑分支、循环、字符串相关、数组和字典、方法的书写调用等内容,考虑到阅读体验分多篇来展示,希望对大家学习swift...// 程序将创建的UIWindow对象赋值给该程序委托对象的window属性 self.window = UIWindow(frame:rect) // 创建ViewController...} 在Swift中,创建tableViewCell的方法可以分为两种创建tableView时候注册和需要使用时手动创建。先聊聊创建tableView的时候直接注册cell: myTb?....func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {...因为在Swift中,所有对象的构造器默认都是public,所以需要重写你的init让其成为私有的。 这样就保证像如下的代码编译报错,不能通过。 六、从相册选择照片或者拍照 ?

    2K30

    教你写个多表视图

    把当前的控制器作为一个父控制器,添加三个UITableViewController的实例作为子控制器,把父控制器中的 scrollView 作为容器,然后添加子控制器中的 tableView 作为子视图...解决的办法是可以自己写个重用机制,不过这显然没必要,用自带重用机制的UICollectionView应该是个更好的选择。...然后要用 layout 控制布局,用最常用的 UICollectionViewFlowLayout 就行了,设置单元格的宽高,既然是翻页,宽肯定是跟屏幕等宽,高度就看你需求了,但是不要超过 collectionView...这边 cell 是会被复用的,在翻到第三页时,会复用第一页的 cell ,第四页复用第二页的 cell……依此类推,所以需要给 cell 中的tableView调用 reloadData方法,不然就算改变了表中的数据...,也不能正确的显示(奇数页都显示第一页的数据,偶数页都显示第二页的数据)。

    1.3K30

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

    正如大多数 iOS 开发人员所知,显示滚动数据是构建移动应用中常见的任务,Apple 的 SDK 提供了 UITableView 和 UICollectionVIew 这俩大组件来帮助执行这样的任务。...在这篇文章中,你将会学到以下内容: 1.让你的 App 可以无限滚动(infinite scrolling),并且滚动数据无缝加载 2.让你的 App 数据滚动时避免卡顿,实现平滑如丝的滚动 3.异步存储...为了改善应用程序体验,在 iOS 10 上,Apple 对 UICollectionView 和 UITableView 引入了 Prefetching API,它提供了一种在需要显示数据之前预先准备数据的机制...;最后用 UITableView 来显示返回的数据,在 viewDidLoad 中先请求网络数据来获取一些初始化数据,然后再利用 UITableView 的 Prefetching API 来对数据进行预加载...,请看效果: image 通过日志,我们也可以清楚的看到,在滚动的过程中是有 Prefetch 和 CancelPrefetch 操作的: image 好了,到这里我就简单的实现了 UITableView

    1.4K20

    iOS 列表界面如何优雅实现模块化与动态化

    业务痛点 iOS 界面开发中 UITableView / UICollectionView 的出场率极高,它们都是使用代理方法配置数据源,虽然这样的设计理念符合了单一职责原则,但在列表变得复杂时代理方法的处理将变得力不从心...图1 代码简单轻量 YBHandyList 保留最小功能,代码量很少,核心思路就一句话:将 UITableView / UICollectionView 的数据源从代理方法配置转化为数组配置。...Cell 的 ViewModel 也可以在主 ViewModel 中构建,这样 Controller 中就不用导入这些类,不过当 Cell 的 ViewModel 需要将事件传递到 Controller...时,就会需要一些胶水代码通过主 ViewModel 间接传递。...YBHandyList 通过继承默认代理实现类就能拓展实现其它的 UITableView / UICollectionView 代理方法。

    1.5K20

    Swift 探索 UICollectionView 之 SupplementaryView 和 Decoration View

    答案当然是肯定的,在 UICollectionView 控件中我们管这叫 Supplementary View, 翻译过来就是 "追加视图",那在 UICollectionView 中该怎么实现给每个...的时候,将需要添加到 UICollectionView section 里的 headerView 和 footerView 先注册一下,它里面的三个参数分别代表的是: 1.所要添加视图的类本身,例如...为 UICollectionView 添加 Supplementary View 首先看下效果图: 具体代码逻辑如下,注释已经在代码中添加: // // BaseAPIViewController.swift...在接下来的内容中,你将会学到以下知识点: 1.如何在 UICollectionView 中创建 Decoration View2.自定义布局属性,计算 section 的背景图位置和大小3.实现 UICollectionView...但当我真正的去整理它的一些技术点时,我发现它实在是太灵活了,以前觉得追加视图,装饰视图这些东西很简单,几行代码的事情,但事实上,当你想要去实现一些高度自定义的界面的时候,你才会认识到自己的不足,你并没有对这些知识有更深层次的认知

    2.2K10

    deleteSections & deleteRows 我踩的坑

    2、点击删除回调 index 然后在数据源中按照 index 找到数据删除掉。...2、不会重新走 cellForRowAt 所以我们给cell赋的index的值不会更新,所以删除某一个cell的时候。...number of sections inserted or deleted (0 inserted, 1 deleted) 这里你再理解一下,你删除之后按道理应该就剩7组了,但是在执行到返回组数的时候你的数据源返回的个数还是...这时候就要利用其我们传给 cell 的model了,我们传给cell 的model指向的还是我们数据源的model (swift引用类型。...oc也是指针),并没有重新赋值,这时候我们就可以在 model 里面写一个 IndexPath 进去,然后在每一次删除完之后我们自己操作在数据源中重新排列这个model中的indexPath ,在删除点击回调的时候直接回调这个

    1.9K30

    让你的 App 更吸引人的 5 个 iOS 库

    现在,您可以创建一个继承自 ExpandingViewController 的 UIViewController,注册在第一步中创建的单元格,并添加UICollectionViewDataSource。...AnimatedCollectionViewLayout 在项目之间滚动时,UICollectionView没有默认的过渡效果动画。...要使用它,您需要将库导入到您的项目中。然后,您必须创建一个 AnimatedCollectionViewLayout 对象,设置其动画设计器,并将其分配给您的 UICollectionView。...中显示倾斜的单元格。...该库可用于每个 UICollectionView,水平和垂直具有动态单元格高度。 在可配置的项目中,可以配置倾斜大小,倾斜方向,倾斜角度,滚动方向,行距,项目大小以及排除第一个或最后一个单元倾斜。

    71030

    iOS开发之DiffableDataSource

    在 iOS 13 中 Apple 为 UITableView 和 UICollectionView 引入了 DiffableDataSource,让开发者可以更简单高效的实现 UITableView、UICollectionView...新的刷新的方法为 apply,通过使用 apply 方法无需计算变更的 indexPaths,也无需调用 reload,即可安全地在主线程或后台线程更新 UI, 仅需简单的将需要变更后的数据通过 NSDiffableDataSourceSnapshot...下面以 UITableView 为例进行讲解。 实现步骤 使用 DiffableDataSource 配置当前 UITableView 的数据源。...DiffableDataSource 通过调用自身 apply 方法将 DataSourceSnapshot 变更后的数据更新同步到 UITableView。...UITableView 的关键使用步骤,UIColletionView 使用类似,完整案例详见下面的链接: UITableView案例 UICollectionView案例

    1.7K10

    AsyncDisplayKit 2.0 教程:入门「译」

    免费App排行榜前100大多数都没有使用Swift(至少6个使用ASDK)。出于这些原因,本系列将重点介绍 Objective-C。话虽这么说,我们已经包括了一个Swift版本的实例项目。...注意:确保在真机上运行本教程中的代码,而不是在模拟器中运行。 向上滑动你将看到帧数丢失引起的卡顿。你不需要启动控制台,以便能发现到这个应用程序需要在性能方面上的一些优化。...image.png 真是一个流畅的 tableView!一旦你开始做了,那就让我们做的更好吧! 无限滚动 在大多数应用中,服务器的数据点的个数往往会多于当前 tableView 中显示的单元格数量。...你占用了多少内存 你应该提前多久加载内容 你决定什么时候忽略用户的交互反映 并且当你考虑到多个维度的内容时,将些问题将会变得更加复杂。...如果将显示和预取都设置为一个屏幕,则它们将完全相同。通常数据需要存在才能显示,所以一般预取范围应该稍大一点。那么在 node 到达该范围时,就可以开始显示。 通常,该范围的前侧大于后侧。

    2.2K20

    iOS 9 Storyboard 教程(二下)

    ,通过这个segue引用,可以传递到这个方法.它用来往玩家数组里添加新的Player对象来作为数据源.然后它会告诉tableView添加了新的一行(在底部),因为tableView和它的数据源始终是同步的...拖拽一个新的 TableViewController到Main.storyboard里.在AddPlayerscene里选择Game的单元格(确保你选择的的是整个单元格,而不是标签)并且按住ctrl并拖线到新的新的...现在让我们给这个新的控制器一些数据来显示吧.在GamePickerViewController.swift中,把一个具有硬编码值的games字符串数组添加到顶部: var games:[String]...text = games[indexPath.row] return cell } 你只是使用games数组设置了数据源并且把字符串的值放到了单元格的textLabel里....在Main.storyboard里,按住ctrl把tableview的单元格拖拽到Exit,就想你之前做的一样,然后从弹框中选择unwindWithSelectedGame:. ?

    2.2K10

    手把手带你撸一个网易云音乐首页(一)

    前言 Hello,大家好,近期我一直在学习用 Swift 编码,由于之前很多项目我都是用 OC 实现的,所以导致我现在对 Swift 还是处于一个学习的阶段中。...为了提高自己的学习效率,每次我都会为自己定下一个短期的目标,就那这次来说吧,为了加快自己上手 Swift, 我为自己定下了的目标就是完成一个 Swift 版本的网易云音乐 App。...” 的 API, 无需我们进行多个接口的调用以及数据源的拼接,就可一获取首页的全部数据啦!...,接下来就是该解决如何将数据可视化了,从网易云音乐首页展示的效果分析来看,整体的视图支持上下滚动,其中单个 Cell 的视图支持横向滚动,所以这里采用 UITableView 嵌套 UICollectionView...: image 具体的实现细节我会在下篇文章中阐述,功能会按照我上述列出来的功能顺序来一一实现的,同时我也会将该工程的代码放在GitHub仓库上。

    1K20
    领券