gpt4 book ai didi

swift - 将 NSTimer 应用于 UILabel (Swift)

转载 作者:行者123 更新时间:2023-11-30 13:18:55 25 4
gpt4 key购买 nike

我对使用 swift 还很陌生,目前正在开发一个小型学校项目。然而,我似乎无法解决的一个功能是如何让 NSTimer 在一定时间后更改 UILabel 中的文本。我想将此函数应用于空白的 UILabel(无法购买),并且刚刚更改为显示消息的文本(“您没有足够的积分”),并且我希望删除此消息并将 UILabel 设为空白大约一秒钟后再次。谁能帮我?谢谢。

class Upgrades: UIViewController{
@IBOutlet weak var shprogresslabel: UILabel!
@IBOutlet weak var fsprogresslabel: UILabel!
@IBOutlet weak var shprogress: UIProgressView!
@IBOutlet weak var fsprogress: UIProgressView!
@IBOutlet weak var shbutton: UIButton!
@IBOutlet weak var fsbutton: UIButton!
@IBOutlet weak var storepoints: UILabel!
@IBOutlet weak var cannotbuy: UILabel!
@IBOutlet weak var label2: UILabel!
@IBOutlet weak var label1: UILabel!
var fsprice = Int()
var shprice = Int()
let defaults = NSUserDefaults.standardUserDefaults()

func updateProgress1(){
fsprogress.progress += 0.1
let fsprogressvalue = self.fsprogress.progress
fsprogresslabel.text = "\(fsprogressvalue * 100)%"
}
func updateProgress2(){
shprogress.progress += 0.2
let shprogressvalue = self.shprogress.progress
shprogresslabel.text = "\(shprogressvalue * 100)%"
}


@IBAction func button2(sender: AnyObject) {
if shprice <= 90{

if SharingManager.sharedInstance.totalscore >= shprice{
SharingManager.sharedInstance.shiphealth = SharingManager.sharedInstance.shiphealth + 1
SharingManager.sharedInstance.totalscore = SharingManager.sharedInstance.totalscore - fsprice
storepoints.text = String(SharingManager.sharedInstance.totalscore)
shprice = shprice + 20
print(shprice)
label2.text = ("\(shprice)")
defaults.setInteger(SharingManager.sharedInstance.shiphealth, forKey: "SharingManager.sharedInstance.shiphealth")
updateProgress2()

}else{
cannotbuy.text = "You dont have enough points"
}
}else{
cannotbuy.text = "You have purchased all the available upgrades for this"
}
}
@IBAction func button1(sender: AnyObject) {
if fsprice <= 100{


if SharingManager.sharedInstance.totalscore >= fsprice{

SharingManager.sharedInstance.bulletspeed = SharingManager.sharedInstance.bulletspeed - 0.15
SharingManager.sharedInstance.totalscore = SharingManager.sharedInstance.totalscore - fsprice
storepoints.text = String(SharingManager.sharedInstance.totalscore)
fsprice = fsprice + 10
print(fsprice)
label1.text = ("\(fsprice)")
defaults.setDouble(SharingManager.sharedInstance.bulletspeed, forKey: "SharingManager.sharedInstance.bulletspeed")
updateProgress1()

}else{
cannotbuy.text = "You dont have enough points"
}
}else{
cannotbuy.text = "You have purchased all the available upgrades for this"
}
}

override func viewDidLoad() {

if fsprice == 0{
fsprice = 10
}
if shprice == 0{
shprice = 10
}
if fsprice == 180{
fsbutton.enabled = false
}
if shprice == 100{
shbutton.enabled = false
}
storepoints.text = String(SharingManager.sharedInstance.totalscore)
label1.text = ("\(fsprice)")
label2.text = ("\(shprice)")


super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}

最佳答案

有两种方法可以实现此目的:

使用NSTimer:

@IBAction func button2(sender: AnyObject) {
...
cannotbuy.text = "You don't have enough points"
NSTimer.scheduledTimerWithTimeInterval(5, target: self, selector: #selector(ViewController.resetCannotBuy), userInfo: nil, repeats: false)
}

func resetCannotBuy() {
cannotbuy.text = ""
}

使用dispatch_after:

@IBAction func button2(sender: AnyObject) {
...
cannotbuy.text = "You don't have enough points"

let fiveSecondLater = dispatch_time(DISPATCH_TIME_NOW, 5 * Int64(NSEC_PER_SEC))
dispatch_after(fiveSecondLater, dispatch_get_main_queue()) {
self.cannotbuy.text = ""
}
}

NSEC_PER_SEC 是每秒纳秒的常数,等于 10 亿。

关于swift - 将 NSTimer 应用于 UILabel (Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37956419/

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