我有一个选项 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)
}
}
为了实现这一目标,我尝试了无数的选择,但未能成功。 因此,我真的很期待任何答案或帮助!
谨致问候
最佳答案
您可以轻松禁用 pickerView。要么完全隐藏它:
PickerView.isHidden = true
然后稍后取消隐藏它,或者只是禁用它:
PickerView.isUserInteractionEnabled = false
并在保存完成后再次启用它。无需将 pickerView 灰显。
编辑:
您设置选择器 View 的 alpha 的代码没有任何问题。确保您的 socket 链接到 Storyboard中的选择器 View 。
关于swift - 倒计时计时器后 UIPickerView 不会在其他 ViewController 上更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47520191/