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

当UITableViewCell被重用时,我的数据不会被保留- SWIFT 3

当UITableViewCell被重用时,数据不会被保留的原因是因为UITableViewCell是可重用的,当滚动或者刷新UITableView时,系统会将不再可见的UITableViewCell放入重用队列中,以便在需要显示新的数据时进行重用,这样可以提高性能和内存利用率。

为了解决数据不被保留的问题,可以在UITableViewCell的重用方法中进行数据的重新赋值。在UITableViewDataSource的方法cellForRowAt中,当获取到重用的UITableViewCell时,可以通过设置UITableViewCell的属性或者调用UITableViewCell的方法来更新数据。

以下是一个示例代码:

代码语言:swift
复制
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "CellIdentifier", for: indexPath) as! CustomTableViewCell
    
    // 根据indexPath获取对应的数据
    let data = dataArray[indexPath.row]
    
    // 更新UITableViewCell的数据
    cell.titleLabel.text = data.title
    cell.subtitleLabel.text = data.subtitle
    
    return cell
}

在上述示例代码中,dataArray是存储数据的数组,CustomTableViewCell是自定义的UITableViewCell子类,titleLabelsubtitleLabel是UITableViewCell中显示数据的UILabel。

对于UITableViewCell的重用问题,还可以使用自定义的数据模型来存储数据,并在cellForRowAt方法中根据数据模型来更新UITableViewCell的数据。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云数据库(TencentDB)。腾讯云云服务器提供了可靠的计算能力,可以用于搭建和运行各种应用程序。腾讯云数据库提供了高性能、可扩展的数据库服务,可以满足各种应用程序的数据存储需求。

腾讯云云服务器产品介绍链接地址:https://cloud.tencent.com/product/cvm

腾讯云数据库产品介绍链接地址:https://cloud.tencent.com/product/cdb

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

相关·内容

Swift 类构造器使用

接下来, 来扯一扯谈一谈最近写 Swift 遇到那些坑问题吧. 感受 首先说下 Swift 给我带来感受吧, Swift 刚开始使用时候感觉还是太特么难用了可以....当然也排除电脑配置影响, 不过重写过程还是蛮顺利, 没有遇到太多问题, 而且使用了很多 Swift 高级特性来缩减原来冗长 ObjC 代码....定义一个指定构造器时候, 必须调用父类某一个指定构造器: Swift 复制代码 init(imageName: String, prompt: String = "") { super.init...而这与 ObjC 区别主要在于第一部分, 因为在 ObjC 中所有的属性如果赋值都会默认初始化为 nil或者 0. 而在 Swift 中可以所有属性值由开发者来指定....子类便利构造器首先会被调用, 这时便利构造器无法修改子类任何属性.

1.7K20

编码篇-继承+通知看方法实现和delloc方法调用

,也就是重写),而实际上 UITableViewCell B 中方法B设计上不是为 通知A服务,其中调用一些未知数据,所有就出现了崩溃。...该通知时,依然会尝试调用该对象接受通知方法,这可能会导致一些问题. 2.对象强委托 对于其他对象来把你当做委托 delegate时,并且是 强引用时,即时你自身释放,但是引用你对象依然还在...,这时需要在引用你对象移除该delegate 3.一些其它资源,类似地图页面。...C语言写一些好内存类文件, 4.控制器中NSTimer没有销毁 viewController中存在NSTimer时,需要特别注意,调用[NSTimer scheduledTimerWithTimeInterval...A一些方法,但是UITableViewCell B方法列表中还是会有 那些方法,只是省去了书写而已,书写在了父类文件中)而且没有销毁,所以UITableViewCell A 中通知A触发时

79220

动手写个 JSON-Model Mapping 库

Swift 在 JSON解析方面有个比较有名第三方库——SwiftyJSON,之前也一直用它。...这简直无解,读了一下 SwiftyJSON 源码希望能找点灵感,然后发现 SwfityJSON 流程是这样(以直接解析 NSData 数据为例): 以一个 NSData 类型数据作为构造器参数实例化一个...写了个 Demo,从联网获取数据到显示数据整个流程如下: 先看看JSON数据结构: ?...tableView,看一下配置cell方法: func configCell(cell: UITableViewCell, indexPath: NSIndexPath) -> UITableViewCell...要用到自己项目中的话直接把 JSONModelMapper.swift文件或者连同HTTPManager.swift一起拖到项目中好了,因为实在“超轻量级”(简陋……),觉得这样最方便了。

1.2K30

iOS_ __attribute__

,帮助编译器估计哪些指针可能指向同一个对象 warn_unused_result:声明返回值很重要,调用者未使用返回值时编译器发出警告⚠️ nothrow:抛出C++ 异常 3.变量属性(Variable...used:声明该符号就算没有使用也需要保留,release 环境下不会被优化 weak:两个或两个以上同名全局符号(函数名或变量名),其中一个声明为 weak symbol 时,不会引发定义错误...链接器会忽视弱符号,其他符号不可用时才会使用。 weakref("target"):声明某个引用为弱引用,需要引用符号不存在也不会链接出错。...deprecated:第一次建议使用版本,意味着使用者应该移除这个方法使用 obsoleted:第一次废弃版本,意味着已经移除,不能够使用了 unavailable:意味着这个平台不支持使用...声明废弃时,该声明会从指定平台或语言中删除且不能再使用。

23430

Swift| 基础语法(五)

前言 总结下 swift基础语法,里面涉及到:常量&变量、Swift数据类型、逻辑分支、循环、字符串相关、数组和字典、方法书写调用等内容,考虑到阅读体验分多篇来展示,希望对大家学习swift...} 在Swift中,创建tableViewCell方法可以分为两种创建tableView时候注册和需要使用时手动创建。先聊聊创建tableView时候直接注册cell: myTb?....register(MyNewTableViewCell.self, forCellReuseIdentifier: "myCell") 注册了Cell之后,在没有可重用Cell时会自动创建,并且不能在需要时手动创建...//创建cell,不需要判断是否为空,没有可重用cell时候会自动创建 let cell:MyNewTableViewCell = (tableView.dequeueReusableCell...因为在Swift中,所有对象构造器默认都是public,所以需要重写你init让其成为私有的。 这样就保证像如下代码编译报错,不能通过。 六、从相册选择照片或者拍照 ?

2K30

史上最全iOS之访问自定义celltextField.textN种方法

因为之前屏幕上出现cell离开屏幕缓存起来时候,cell上内容并没有清空,cell用时,系统并不会给我们把cell上之前配置内容清空掉,所以我们在else中对contentTextField...因为之前屏幕上出现cell离开屏幕缓存起来时候,cell上内容并没有清空,cell用时,系统并不会给我们把cell上之前配置内容清空掉,所以我们在else中对contentTextField...A控制器pushB控制器后,我们在B控制器界面上TextField编辑内容,A控制器此时也监听了该通知,所以,A控制器上contentTextFieldTextDidChange:方法也会被调用。...因为之前屏幕上出现cell离开屏幕缓存起来时候,cell上内容并没有清空,cell用时,系统并不会给我们把cell上之前配置内容清空掉,所以我们在else中对contentTextField...因为之前屏幕上出现cell离开屏幕缓存起来时候,cell上内容并没有清空,cell用时,系统并不会给我们把cell上之前配置内容清空掉,所以我们在else中对contentTextField

6.7K40

iOS 10 ~ iOS 15 tableview 适配(使用注意事项)

里面的view无法响应点击 image.png 原因是cell中contentview改为了懒加载,如果添加自定义子view前没有访问.contentview,添加view会被contentview...也是就是view会比contentview提前创建并添加到cell上,导致contentView挡住 (如果最先有对contentView访问,则contentView提前添加,后续添加view不会被挡住...style, reuseIdentifier: reuseIdentifier) contentView.addSubview(someView) } 三、iOS 15 代理、数据源固定存在代码...View,显示是正常 3.UITableViewStyle为Grouped时,不管是sectionHeaderViewsectionHeaderTopPadding还是sectionHeaderView...wikcnv5UZ2xk1kVoOtCZDmqSHRd#doxcn2smYAy8GwAyyKCqfewTKi9 注:不实现viewForHeaderInSection,实现heightForHeaderInSection并返回非0高度生效原因是

1.9K20

用这些 iOS 技巧让你 APP 性能更佳

// ViewController.swift self.restorationIdentifier = "MainVC" 在状态保留期间,所有分配了恢复标识符视图控制器或视图都会将其状态保存到磁盘...当用户强制退出你应用程序时,状态数据将被删除,你当然希望以这种方式丢失模型数据。 要测试状态保存和恢复是否正常,请按照以下步骤操作: 使用Xcode构建和启动应用程序。...由于本节仅涵盖了状态保存和恢复基础知识,因此推荐 Apple Inc. 上以下文章。...(查看大图) 上面显示所有 label(“查看朋友”等)红色突出显示,是因为 label 拖动到 storyboard 时,其背景颜色默认设置为透明。...在 Apple 主线程检查器 文章中提及: 「在主线程以外线程上更新 UI 是一种常见错误,这可能导致 UI 更新,视觉缺陷,数据损坏以及崩溃。」

3.2K30

Swift 面向对象解析(二)

ZXMessageCell: UITableViewCell { // 自定义cell继承与UITableviewCell }      继承了父类,你也就能使用父类属性方法...看下面几点,      1:重写父类方法      2:重写父类属性      3:重写属性观察者    上面的 1 2 3 只要记住一点,在重写方法,属性,观察者等等前面添加 override...使用 final 修饰类不能继承,派生子类,使用 final 修饰属性不能重写,使用 final 修饰方法、下标不能重写。...上面是多态概念,它使用和例子以前总结写过,把以前博客链接给大家。...协议基本用法以前博客当中也有说过 Swift 2.2 协议和代理          顺便指出,可选协议这一点,其实也挺简单,你在这些属性、方法、下标等想让它是可选,让它加上 optional

94870

Make WeChat Great Again

觉得这不是 bug,而是产品策略。微信在努力保持用户粘性,不得不在用户需求和产品数据之间权衡。好吧,扯远了。。。 保留了这俩『活儿好不粘人』工具类入口: ?...Cell 高度设为 0 后发现 subview 挤出来了,日,只好再干掉这些 subview。...==就问你怕不怕== 微信一些列表页面是由数据来驱动 UI 。...直接 remove 好处是可以保留聊天页面的小红点提醒,而其他页面的小红点隐藏了。猜原因是聊天页面的小红点在添加上去后会设置下 hidden = NO,因为 cell 是重用。...阻止撤回消息 - 知道真相眼泪掉下来 有时候撤回消息看到了会后悔,但这依然阻止不了好奇心+强迫症。 在 『让你微信不再被人撤回消息』 里介绍过用 Hopper 逆向方法。

2.4K80

Swift-MVVM 简单演练(一)

突然发现swift在这里是比objective-c友好很多,如果你给参数设置了一个默认值。...---- 上拉刷新 现在多数APP做无缝上拉刷新,就是tableView滚动到最后一行cell时候,自动刷新加载数据。.../ErrorType.swift, line 182 虽然会将错误信息完整打印出来,但是程序崩溃对于用户来说是很不友好,因此建议。...在这里HQVistorView和HQBaseViewController是紧耦合关系,HQVistorView可以看成是从属于HQBaseViewController。基本不会被在其它地方用到。...总结 使用代理传递消息是为了在控制器和视图之间解耦,让视图能够多个控制器复用,如TableView 但是,如果视图仅仅是为了封装代码,而从控制器中剥离出来,并且能够确认该视图不会被其它控制器引用,

10.2K51

实现 iOS 无感知上拉加载更多

如何实现 在看见这位网友留言时候,就开始思考了。 在我看来,有下面几个着手点: 列表滑动时候是如何知道具体滑动位置以触发接口请求,添加更多数据?...SwiftCoinRankListController.swift 文件查看具体逻辑,其主要就是通过 cell 显示个数去提前请求加载数据,然后我们看看效果: ?...Gif可能看起来还好,调试感受: 虽然做到了上拉无感知,但是手滑速度比较快时候,到底了新数据没有回来,就会在底部等一段时间。...使用 MJRefreshAutoFooter,这个简单,直接把基类 footer 给替换掉就可以了,本代码可以在开源项目中 BaseTableViewController.swift 文件查看:...思路也许困难,但是真正一点点实现并完善功能,每一步都并不容易,这次也仅仅是继续使用了 MJRefresh 这个轮子。

2.2K40

Swift解读专题二——基本类型 原

Swift解读专题二——基本类型 一、常量和变量         Swift语言常量和变量在使用之前,必须定义。...示例如下: var tmp = 3;print(tmp) 三、整型与浮点型         Swift中提供8位、16位、32位、64位类型整型,整型数组包含小数,包含负整数,0和正整数。...在Swift中,Bool作为一种独立数据类型,提供true和false两种值。...示例如下: var boolVale:Bool = true 五、元组         元组是Swift语言十分一个特点,它允许开发者将任意个不同类型数据组合成一个数据类型,这也是Swift语言一个强大之处...2.无效参数传递进函数时。 3.对于一个可能为nil值,为nil时后续代码无法工作时。 专注技术,热爱生活,交流技术,也做朋友。 ——珲少 QQ群:203317592

69430

Swift 中 key paths 能力

自从swift刚开始就被设计为是编译时安全和静态类型后,它就缺少了那种么经常在运行时语言中动态特性,比如Object-C, Ruby和JavaScript。...articleSources = articles.map(\.source) 这是非常酷,但是,key paths 真正开始发光时,它们用于形成稍微复杂表达式,例如在排序一系列值时。...,副标题以及图片而不用去管他们代表是什么模型)- 因此让我们看看,我们能否用关键路径威力去创建一个共享配置实现,让他可以任意模型使用。...让我们创建一个名叫CellConfigurator泛型,然后因为我们想要用不同模型去渲染不同数据,所以我们将会给它提供一组基于关键路径属性 - 我们先渲染其中一个数据: struct CellConfigurator...给定一个对象,以及给这个对象设置关键路径,我们将会自动将捕获对象作为弱引用类型,一旦我们函数调用,我们就会给匹配关键路径属性赋值。

2.4K20

Swift 中 key paths 能力

前言 自从 swift 刚开始就被设计为是编译时安全和静态类型后,它就缺少了那种么经常在运行时语言中动态特性,比如 Object-C, Ruby 和 JavaScript。...articleSources = articles.map(\.source) 这是非常酷,但是, key paths 真正开始发光时,它们用于形成稍微复杂表达式,例如在排序一系列值时。...尝试着去渲染标题,副标题以及图片而不用去管他们代表是什么模型)- 因此让我们看看,我们能否用关键路径威力去创建一个共享配置实现,让他可以任意模型使用。...让我们创建一个名叫 CellConfigurator 泛型,然后因为我们想要用不同模型去渲染不同数据,所以我们将会给它提供一组基于关键路径属性 - 我们先渲染其中一个数据: struct CellConfigurator...给定一个对象,以及给这个对象设置关键路径,我们将会自动将捕获对象作为弱引用类型,一旦我们函数调用,我们就会给匹配关键路径属性赋值。

1.6K10
领券