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

UILabel在重新加载时不会在UITableViewCell中刷新

的原因是,UITableViewCell的重用机制导致了UILabel的内容不会自动更新。

UITableViewCell是通过重用队列来管理的,当一个UITableViewCell滑出屏幕时,它会被放入重用队列中,以便在需要时可以被复用。当一个UITableViewCell被复用时,它的内容会被重置为初始状态,包括其中的UILabel。

为了解决这个问题,我们可以在UITableViewDelegate的方法tableView(_:cellForRowAt:)中手动更新UILabel的内容。具体步骤如下:

  1. 在UITableViewCell的子类中,为UILabel添加一个标识符(identifier),可以使用tag属性或者自定义属性来标识。
  2. tableView(_:cellForRowAt:)方法中,获取重用的UITableViewCell,并根据标识符找到其中的UILabel。
  3. 更新UILabel的内容。

以下是一个示例代码:

代码语言:swift
复制
class CustomTableViewCell: UITableViewCell {
    let labelTag = 100 // 自定义标识符
    
    func configureCell(withText text: String) {
        if let label = self.viewWithTag(labelTag) as? UILabel {
            label.text = text
        }
    }
}

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
    let tableView = UITableView()
    let cellIdentifier = "CustomCell"
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        tableView.dataSource = self
        tableView.delegate = self
        tableView.register(CustomTableViewCell.self, forCellReuseIdentifier: cellIdentifier)
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! CustomTableViewCell
        
        // 更新UILabel的内容
        cell.configureCell(withText: "新的文本")
        
        return cell
    }
}

在上述示例代码中,我们在CustomTableViewCell中添加了一个configureCell方法,用于更新UILabel的内容。在tableView(_:cellForRowAt:)方法中,我们调用了这个方法来更新UILabel的内容。

这样,当UITableViewCell被重用时,UILabel的内容会被正确地更新。

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

相关·内容

RunLoop总结:RunLoop的应用场景(三)滚动视图流畅性优化

屏幕一秒钟会刷新60次(屏幕一秒钟会重新渲染60次),那么每次刷新界面之间的处理时间,就是1/60,也就是1/60秒。也就是说,所有会导致计算、渲染耗时的操作都会影响UITableView的流畅。...下面举例说明: 1.主线程做耗时操作 耗时操作,包括从网络下载、从网络加载、从本地数据库读取数据、从本地文件读取大量数据、往本地文件写入数据等。...(这一点,相信大家都知道,要尽量避免主线程执行,一般都是创建一个子线程来执行,然后再回到主线程) 2.动态计算UITableViewCell的高度,时间过久 iOS7之前,每一个Cell的高度,...关于这一点,我以前的做法是Cell定义一个public方法,用来计算Cell高度,然后计算完高度后,将高度存储Cell对应的Model(Model里定义一个属性来存高度),然后渲染Cell,...这样在为Cell各个子控件赋值,仅仅是取值、赋值,计算Cell高度,也仅仅是加法运算。 3.界面背景色透明的视图过多 为什么界面背景色透明的视图过多会影响UITableView的流畅?

2.1K41

Swift-MVVM 简单演练(四)

相当于控制器还是直接使用模型。 为了解决上面的问题,需要将加载数据的视图模型HQStatusListViewModel和HQStatus之间的相互引用打断。...]() /// 上拉刷新错误次数 fileprivate var pullupErrorTimes = 0 /// 加载微博数据字典数组 ///...如果一个类没有任何父类,开发需要输出调试信息,需要遵守如下规则: 遵守CustomStringConvertible协议 实现description方法 class HQStatusViewModel...那么昵称和头像这类的赋值就不能直接在cell完成,我们只需要将viewModel传给topView,然后topView赋值就好了。...关于性能的一点探讨 之前didSet方法设置,如果是表格,每次滚出屏幕再滚动回来的时候都要重新执行didSet方法,重新计算。不断的消耗CPU。一定会多多少少影响一点性能的。

2.2K50

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

应用中最多使用的UITableView以及UITableViewCell的数据更新的处理机制使用不恰当导致delegate的方法实现异常的复杂,尤其是那些复杂的UITableViewCell的更新处理不得当导致代码混乱不堪...控制器初始化(init) 如果你的业务模型对象的生命周期和控制器的生命周期一样,那么建议将业务模型对象的构建放在控制器的初始化代码,当然前提是你的业务模型对象是一个轻量级的对象,如果你的业务模型对象的构建特别消耗时间那么不建议放在控制器的初始化构建而是通过懒加载或者某个触摸事件发生再构建...如果因为某些原因使得我们的控制器里面的所有视图都需要重新创建(比如换肤)那么就有可能导致这个懒加载的视图不会再次被创建而产生界面上莫名其妙的问题。...更有甚者因为加载实现过多的代码导致某些地方访问属性产生了崩溃。 因此不建议对一个控制器里面的所有视图构建都采用懒加载模式,视图的构建和布局应该在loadView中进行统一处理。...同时还需要注意的就是如果一定要采用懒加载来实现对象的构建加载的代码也应该尽量的简化,只需要实现创建部分的功能即可,而不要将一些非必要的逻辑代码放入到懒加载的实现处,越多的逻辑实现,就会对使用着产生越多的限制和不确定因素的发生

4.4K30

MyLayout&TangramKit 的重大升级!

系统内部的实现如果布局引擎布局发现某个视图没有设置高度或者宽度约束那么就会去调用这个视图的intrinsicContentSize方法,如果这个方法返回了正常的尺寸则视图就按这个尺寸来进行渲染和展示...那就是当添加或者删除子视图以及调整了某个子视图的位置和尺寸就需要重新调整父视图的自适应约束设置。...那就是一旦容器视图中添加子视图就需要重新调整容器视图的右边界和下边界的约束依赖。这就需要将旧的边界约束依赖记住,并在设置新的边界依赖前删除旧的约束依赖。...然后UITableViewCell的派生类的视图代码布局处或者-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath...然后UITableViewCell的派生类建立一个根布局视图,这个根布局视图作为子视图添加到contentView中代码如下: //假设根布局视图是一个垂直线性布局视图。

2K20

Swift| 基础语法(五)

makeKeyAndVisible() return true } 二、UILabel、UIButton、UIImageView的使用 let mylabel = UILabel(frame...} Swift,创建tableViewCell的方法可以分为两种创建tableView时候注册和需要使用时手动创建。先聊聊创建tableView的时候直接注册cell: myTb?....register(MyNewTableViewCell.self, forCellReuseIdentifier: "myCell") 当注册了Cell之后,没有可重用的Cell时会自动创建,并且不能在需要手动创建...可以自定义cell处理点击状态下的显示 var label1 :UILabel? var label2 :UILabel?...因为Swift,所有对象的构造器默认都是public,所以需要重写你的init让其成为私有的。 这样就保证像如下的代码编译报错,不能通过。 六、从相册选择照片或者拍照 ?

2K30

iOS开发中行高灵活可变的UITableView的性能优化

iOS开发中行高灵活可变的UITableView的性能优化 一、UITableView的构建原理         新闻类,电商类等应用,应用着大量的图文混排视图,表视图UITableView,...当执行TableView的reloadData方法进行界面刷新,系统先会把所有行的行高数据拉取一遍,之后和UITableViewCell配置部分的场景一直,会拉取即将出现在屏幕上的cell的行高数据。...heightForRowAtIndexPath方法拉取行高,直接返回已经计算过的行高数据,具体如何操作比较灵活,可以对应一个数组属性,将计算后的行高放入数组,每次取行高,检查数组是否已经有计算过的行高数据...iOS7系统之后,UITableView类增加了一个estimatedRowHeight属性,顾名思义,这个属性是设置UITableViewCell的大约行高值。...如果实现了这个方法,并且实现了heightForRowAtIndexPath方法,heightForRowAtIndexPath方法会以懒加载的方式执行,只有cell将要展现在屏幕上heightForRowAtIndexPath

1.9K20

「 UITableView 入门 」新人解决列表 Cell 高度自适应,UITableViewCell 高度自适应

一、前言 我们写列表的时候,经常出现每一个 Cell 高度不一样的情况,但是 iOS 这边是是太不智能了 比起隔壁 android 的 RecyclerView ,人家可以自动更具每一项高度,来进行伸缩变化...面对这种问题, 了解清楚美丽的沙滩到底是一种怎么样的存在,是解决一切问题的关键。", "我们都知道,只要有意义,那么就必须慎重考虑。"]...{ lazy var contentLabel: UILabel = { let label = UILabel() label.translatesAutoresizingMaskIntoConstraints...contentView.bottomAnchor, constant: -10), ]) } } 3.2.1 子控件实现 为了提高代码可读性,这里建议大家使用懒加载的形式...,通过 widthAnchor & heightAnchor 强制来设定 3.3 列表界面 - UITableViewController 相比于 cell 的注意点,对于 UItableView

2K10

实践-小效果 III

可是其中还是有需要注意的地方,实现的步骤大致如下: 绘制一个 CAShapeLayer 不用指定大小,_pieLayer = [CAShapeLayer layer]; 绘制三个 彩色的扇形CAShapeLayer 并加载...如果在一个 UIButton 你设置 setImage并且 setTitle 。你会发现,默认的是 图片在左边,文字右边。并且这跟 UIButton 的Frame无关。...和UIImameView添加点击效果的控件,认清楚这个事实,我们运用UIButton的时候就更准确了,我们实际的开发这样的会遇到这样的情况,有一个小图标,但是这个图标又能点击,我们只需要把这个Button...setImage 然后调整这个图标Button的位置即可达到效果 [self.settingButton setImageEdgeInsets:UIEdgeInsetsMake(Scale_Y...思路不错可以借鉴,大致如下: 点击按钮切换按钮的图标同时设置 全局 isGrid 数值,并刷新 CollectionView。

1K20

测试 View Controllers

示例程序,我们有个包含数组的 data source 需要测试。这个 data source 会在某个时候从 table view 取出(dequeue)一个 cell。...做测试,为测试类创建基类是个不错的模式。把通用的逻辑放到基类里面,可以让测试更简单和集中。可以通过示例程序的例子来看看这样带来的好处。...你可以测试之前或之后运行脚本,也可以有多个测试 bundle。这对大型项目来说很有用。最重要的是,可以打开或关闭个别测试,这对调试测试非常有用,只是要记得之后再把它们重新全部打开。...测试 NIB 加载 PhotoCell设置一个 NIB ,我们可以写一个简单的测试来检查 outlets 设置得是否正确。...) IBOutlet UILabel\* photoTitleLabel; @property (weak, nonatomic) IBOutlet UILabel\* photoDateLabel;

69920
领券