UI按钮不会使用计时器显示/隐藏

时间:2019-04-30 21:58:33

标签: ios swift

我正在构建一个用作蓝牙遥控器的应用程序。该界面有几个按钮。在“设置”窗口中,我有一种启用和禁用某些按钮组的方法。当我更改此设置并使用按钮返回到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")
     }
}

0 个答案:

没有答案