我正在构建一个用作蓝牙遥控器的应用程序。该界面有几个按钮。在“设置”窗口中,我有一种启用和禁用某些按钮组的方法。当我更改此设置并使用按钮返回到View Controller时,我希望它自动添加/删除必要的按钮。
我可以通过按下按钮(manualRefreshButton)手动完成此操作,并且效果很好。但是,如果我尝试以任何其他方式(例如计时器)运行该功能,则不会导致按钮根据需要显示/隐藏。但是,它每次都会打印到控制台,所以我知道计时器正在执行。
我试图在关闭“设置”视图控制器时运行“ refreshView”,并尝试将其作为计时器运行,如代码所示,两者的结果相同。我在控制台窗口中看到了打印的文本,但是除非手动按下该“ manualRefreshButton”,否则按钮不会隐藏。
override func viewDidLoad() {
super.viewDidLoad()
}
@IBOutlet var btnUpOne: UIButton?
@IBOutlet var btnUpTwo: UIButton?
@IBOutlet func manualRefreshButton(_ sender: UIButton) {
refreshView()
}
var timer: Timer?
func runTimer() {
if timer == nil {
self.timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.loop), userInfo: nil, repeats: true)
}
}
func loop() {
refreshView()
}
func refreshView() {
DispatchQueue.main.async {
print("Refreshing...")
if UserDefaults.standard.integer(forKey: "buttonsSetting") == 0
{
self.btnUpOne?.isHidden = false
self.btnUpTwo?.isHidden = true
print("Button One Visible, Button Two Hidden")
}
else if UserDefaults.standard.integer(forKey: "buttonsSetting") == 1
{
self.btnUpOne?.isHidden = false
self.btnUpTwo?.isHidden = false
print("Button One Visible, Button Two Visible")
}
print("Refresh Complete")
}
}