swift - 在按钮操作下声明的函数不起作用

标签 swift xcode

我正在制作一个应用程序,当您按下按钮时,我需要运行一些功能。我还没有任何错误,当你按下按钮时什么也没有发生

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBOutlet var Background: UIView!
    @IBOutlet weak var RedOverlay: UIView!
    @IBOutlet weak var Text: UILabel!



    var timer = Timer()
    var seconds = 3
    var timerRunning = false


    @IBAction func screenPressed(_ sender: Any) {
        func runTimer() {
                timer = Timer.scheduledTimer(timeInterval: 1, target: self,   selector: (#selector(ViewController.updateTimer)), userInfo: nil, repeats: true)
            timerRunning = true
            }
    }

    @objc func updateTimer() {
        seconds -= 1
        Text.text = String(seconds)
        if seconds < 2 {
            timer.invalidate()
            UILabel.animate(withDuration: 0.5, animations: {
                self.Text.alpha = 0
            })
            backgroundChange()
        }
    }

    func backgroundChange() {
        let wait = Int.random(in: 1 ... 10)
        DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(wait), execute: {
            self.Text.alpha = 1
            self.Text.text = "Go"
            self.RedOverlay.alpha = 1
        })
    }
}

我使用 Storyboard,因此该功能通过 socket 连接到按钮

最佳答案

您正在 IBAction 中定义您的函数。

移动你的

func Runtimer() { ... } 

在它的外部并从内部调用它:

@IBAction func screenPressed(_ sender: Any) {
    runTimer()
}

关于swift - 在按钮操作下声明的函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56461068/

相关文章:

ios - 页面指​​示器快速不同步

swift - 使用 PromiseKit 和 Alamofire 时跟踪进度

ios - IBOutletCollection 和标签属性

ios - AWS 集成 ios 问题

ios - 为什么在尝试访问已获取对象的属性时会出现 CoreData 多线程冲突?

objective-c - 使用 Xcode 9 构建时,Sierra 上缺少 ColorSync 框架

Swift:如何禁用函数的整数溢出/下溢陷阱

ios - 在 swift 中定义枚举的最佳位置在哪里?

swift - 为什么迭代闭包会导致 swift 出现总线错误?

ios - snapchat 是如何实现设置下拉菜单的?