在倒数计时器之后,UIPickerView不会在其他ViewController上更新

时间:2017-11-27 21:35:46

标签: swift timer uiviewcontroller uipickerview alpha

我有一个选项ViewController,用户可以在其中更改密码和pickerView。每当他按下保存按钮时,计时器启动并且用户通过segue被引导到主屏幕。我希望能够在用户按下此保存按钮时将pickerView变灰一段时间(在选项ViewController上)(它等于基于时间的限制)。 我现在的问题是,无论何时用户按下按钮并被定向到主屏幕,选项ViewController上的pickerview.alpha(我设置为灰色效果)都不会改变/当用户返回时,更改不可见在这段时间内。此外,当时间段到期时,pickerview.alpha不会更改选项ViewController屏幕。

所以为了遵循我的描述,这里是我的代码到目前为止:

import UIKit        

class OptionsViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate

 @IBOutlet var PickerView: UIPickerView!

 var seconds = 20
 var timer = Timer() 
 var isTimerRunning = false

 @IBAction func Save_Touched(_ sender: Any) {
     if isTimerRunning == false {
         runTimer()
     }
     self.performSegue(withIdentifier: "fromOptionstoMainSegue", sender: self)
 }

 func runTimer() {
     timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(OptionsViewController.updateTimer), userInfo: nil, repeats: true)
     self.PickerView.alpha = 0.5
     isTimerRunning = true
 }

 func updateTimer() {
     if seconds < 1 {
         timer.invalidate()
         self.PickerView.alpha = 1.0
     } else {
         seconds -= 1
         print(seconds)
     }
 }

 override func viewDidLoad() {
     super.viewDidLoad()

     self.PickerView.dataSource = self
     self.PickerView.delegate = self

     print(isTimerRunning)  
 }
}

为了实现它,我尝试了无穷无尽的选择,但却无法实现。 因此,我真的很期待任何答复或帮助!

亲切的问候

1 个答案:

答案 0 :(得分:0)

您可以轻松禁用pickerView。要么完全隐藏它:

PickerView.isHidden = true

然后取消隐藏它,或者只是简单地禁用它:

PickerView.isUserInteractionEnabled = false

并在保存完成后再次启用它。没有必要使pickerView变灰。

编辑:

您的代码设置选择器视图的alpha值没有任何问题。确保您的插座链接到故事板中的选择器视图。