VesselWheel

[Trobule Shooting] 러닝타이머 거리값이 pause 버튼을 누렀다가, 다시 재개를 누르면 계속 기록되지 않고 멈춤 본문

Xcode Study

[Trobule Shooting] 러닝타이머 거리값이 pause 버튼을 누렀다가, 다시 재개를 누르면 계속 기록되지 않고 멈춤

JasonYang 2024. 3. 15. 10:43

현재 문제점

 

-> 러닝타이머 거리값이 pause 버튼을 누렀다가, 다시 재개를 누르면 계속 기록되지 않고 멈춤

1. 버튼의 target 매소드인 restartRunning()에는 시간값을 책임하는 restart() 매소드가 있다.

상기 코드에서 보면 

        self.runningTimer.restart()
        self.dismiss(animated: true) {
            self.delegate?.didDismissPauseRunningHalfModalViewController()
        }

runningTimer 클래스를 델리게이트 패턴 선언하고 PauseRunningHalfModalViewController에서 객체화하고 나서,

restart()매소드를 호출하고 있다. 

class PauseRunningHalfModalViewController: UIViewController {
    
    let runningTimer = RunningTimer()
    
    weak var delegate: PauseRunningHalfModalViewControllerDelegate?

 

그러나, runningTimer.restart() 는 싱글톤 패턴으로 restart() 매소드를 호출하고 있고, 

마찬가지로, self.delegate?.didDismissPauseRunningHalfModalViewController()도 델리게이트 패턴으로 restart() 매소드를 호출하고 있어 중복되는 코드이며, 거리값은 재개를 하지 않는 문제점이 발생했다. 

protocol PauseRunningHalfModalViewControllerDelegate: AnyObject {
    func didDismissPauseRunningHalfModalViewController()
}

import UIKit
import CoreLocation

class PauseRunningHalfModalViewController: UIViewController {
    func didDismissPauseRunningHalfModalViewController() {
        runningTimer.restart()
    }