gpt4 book ai didi

swift - 标签文本在功能中被多次更改,但未在屏幕上更新

转载 作者:行者123 更新时间:2023-11-28 08:41:39 24 4
gpt4 key购买 nike

在我的应用中,我需要使用标签显示文本。用户提供一个值,用于确定每次文本更改之间的延迟。每次标签更新时,它的文本都会成为我数组中的下一个项目。但是,当它在应用程序中使用时,标签会在几秒钟后变为数组中的最后一项(延迟时间乘以数组中的项数)。我也打印了该项目,但在几秒钟后一次打印了所有项目(延迟时间乘以数组中的项目数量)。那么,有没有办法让标签在每次更改后更新,而不是在最后更改?

导致问题的代码:

    @IBAction func startEndTouch(sender: AnyObject) {

var wordsPerMinVal:Double = 60.0/sliderValueBen

for item in textEnterGo {
delay(wordsPerMinVal){
self.yourWordsLabel.text = item
print(item)
}
}
}

最佳答案

您需要了解事件循环用于更新 UI 的方式,以及您的代码如何插入循环。

当您的代码获得控制权时,屏幕渲染将停止,让您的代码进行任何需要进行的更新。一旦您的代码返回,Cocoa 就会分析您的方法中所做的更改,并相应地更新视觉效果。

这提供了解决您的问题的关键:在您的方法结束之前,包括 for 循环,Cocoa 无法看到任何更改。这就是为什么您只能看到最后一次更新,而不会注意到中间更新的原因。

为了解决这个问题,您需要重新考虑方法:创建一个将其状态保存在成员变量中的方法,而不是使用循环。从事件处理程序调用该方法,设置第一次显示的状态,显示第一项,设置定时器以在 wordsPerMinVal 中唤醒您,然后返回。这将使事件循环呈现您的更改。当计时器叫你回来时,改变视觉效果,根据需要重新设置计时器,然后再次返回。继续,直到完成更新。

关于swift - 标签文本在功能中被多次更改,但未在屏幕上更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36391365/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com