У меня проблема с функциями таймера. Я запускаю таймер, когда нажимаю на btn (startBtn), и я показываю новый элемент управления представлением в качестве popover при ударе другого btn (restBtn) Теперь он правильно запускает таймер и открывает новый диспетчер представлений как popover с подсчетом времени вниз.Запустить таймер в другом диспетчере просмотра в swift
Проблема в том, когда в новом диспетчере просмотра он достигает 0 и отклоняется от себя. Он должен автоматически запускать таймер в первом режиме управления представлением.
Вот мой код на mainVC:
var timeLeft = 0
var myTimer: Timer!
@IBAction func startBtnPressed(_ sender: AnyObject) {
timeLeft = 0
myTimer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(workoutStartVC.timerRunning), userInfo: nil, repeats: true)
}
@IBAction func restBtnPressed(_ sender: AnyObject) {
print("rest mode button is pressed and i am showing a overlay right now with data count down")
myTimer.invalidate()
// show popup when user interacts with restbtn
let popOpVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "sbPopUpID") as! PopUpVC
self.addChildViewController(popOpVC)
popOpVC.view.frame = self.view.frame
popOpVC.view.backgroundColor = BLUE_COLOR.withAlphaComponent(0.75)
self.view.addSubview(popOpVC.view)
popOpVC.didMove(toParentViewController: self)
timeLbl.text = ""
}
func timerRunning() {
timeLeft = timeLeft + 1
print("the timeLeft is: \(timeLeft)")
**timeLbl.text = "\(timeLeft)"** (HERE I AM GETTING ON THE SECOND TIME WHEN DISMISSING THE POPUPVC A FOUND NILL)
if timeLeft == 30 {
myTimer.invalidate()
timeLbl.text = ""
}
}
Вот мой код на PopUpVC:
var timeLeft = 0
var myTimer: Timer!
override func viewDidLoad() {
super.viewDidLoad()
timeLeft = 10
myTimer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(PopUpVC.timerRunning), userInfo: nil, repeats: true)
}
func timerRunning() {
timeLeft = timeLeft - 1
restModeTimer.text = "\(timeLeft)"
if timeLeft == 0 {
myTimer.invalidate()
restModeTimer.text = ""
self.view.removeFromSuperview()
let worskoutStartVC = workoutStartVC()
worskoutStartVC.myTimer = nil
worskoutStartVC.timeLeft = 0
worskoutStartVC.myTimer = Timer.scheduledTimer(timeInterval: 1.0, target: worskoutStartVC, selector: #selector(worskoutStartVC.timerRunning), userInfo: nil, repeats: true)
}
}
Может кто-нибудь объясняет, почему я получаю нашел ноль в то время как разворачивание вариант значение в той части, которую я сделал полужирным в моем коде ниже?
спасибо!
1000000 указывает на этого парня –