从 NSTimer 函数调用 UIButton @IBAction [关闭]

Posted

技术标签:

【中文标题】从 NSTimer 函数调用 UIButton @IBAction [关闭]【英文标题】:Call UIButton @IBAction from NSTimer function [closed] 【发布时间】:2020-01-14 09:47:34 【问题描述】:

我有一个通过操作以编程方式添加的 UIButton

@objc func buttonAction(_ sender: UIButton!) 

我想从下面的定时器选择器调用上面的函数

@objc func preResult(timer: Timer) 

我该怎么做?

【问题讨论】:

问题不清楚,能解释清楚吗? 我想从定时器功能启动我的 UI 按钮 【参考方案1】:

按钮下方的代码 sn-p 将由计时器关闭以及用户点击按钮时调用。

import UIKit

class ViewController: UIViewController 

    var button: UIButton = UIButton(frame: CGRect(x: 0, y: 0, width: 100, height: 40))

    var timer: Timer?

    override func viewDidLoad() 
        super.viewDidLoad()

        // Create a timer which will call a closure with an argument timer
        timer = Timer.scheduledTimer(withTimeInterval: 4, repeats: true, block:  (timer) in
            self.perform(#selector(self.buttonAction))
        )

        // Add a button to a view
        view.addSubview(button)

        // Assign a function to call when a button is tapped
        button.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)
    

    @objc func buttonAction() 
        print("button tapped")
    


【讨论】:

【参考方案2】:

你的意思是你想在你的定时器事件中做某事,并用你得到的结果更新你的按钮 UI?

如果是这样,只需在活动结束时设置按钮的标题/颜色(无论您想更新什么)。并记住在主线程中执行此操作。

DispatchQueue.main.async 
    // update UI

【讨论】:

以上是关于从 NSTimer 函数调用 UIButton @IBAction [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

从 UIButton 调用 prepareforSegue?

使用时间和动画从字符串数组中更改 UILabel/UIButton 文本

如何从我的应用程序委托启动一个 NSTimer,它在 Viewcontroller.m 中调用我的方法

如何在选择器成功之前调用 NSTimer [重复]

如何使用 Objective C 从用户应用程序登录时间到 24 小时进行 NSTimer 调用?

如何最好地为 UITableViewCell 或 UIButton 设置动画以重复亮起红色