тип 'UIViewController' не имеет члена updateTimer - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь получить доступ к свойству таймера в UIViewController

Для самой последней версии swift UIViewController, похоже, не имеет члена "updateTimer"

class InGameViewController: UIViewController {

    @IBOutlet weak var countdownTimerLabel: UILabel!
    @IBOutlet weak var questionLabel: UILabel!
    @IBOutlet weak var pointsLabel: UILabel!

    @IBOutlet weak var initialCountdownLabel: UILabel!

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

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        let value = UIInterfaceOrientation.landscapeLeft.rawValue
        UIDevice.current.setValue(value, forKey: "orientation")

         }

    func runTimer() {

        timer = Timer.scheduledTimer(timeInterval: 1, target: self,   selector: (#selector(UIViewController.updateTimer)), userInfo: nil, repeats: true)
    }
}

Ответы [ 3 ]

0 голосов
/ 26 марта 2019

UIViewController не имеет свойства с именем updateTimer

Я не думаю, что вы можете просто вызвать свойство в #selector(), так как оно имеет неправильную подпись и завершится ошибкой.

для справки API ссылка на то, что вы называете: https://developer.apple.com/documentation/foundation/timer/1412416-scheduledtimer

0 голосов
/ 27 марта 2019
class InGameViewController: UIViewController {

    @IBOutlet weak var countdownTimerLabel: UILabel!
    @IBOutlet weak var questionLabel: UILabel!
    @IBOutlet weak var pointsLabel: UILabel!

    @IBOutlet weak var initialCountdownLabel: UILabel!

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

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        let value = UIInterfaceOrientation.landscapeLeft.rawValue
        UIDevice.current.setValue(value, forKey: "orientation")

         }

    func runTimer() {

        timer = Timer.scheduledTimer(timeInterval: 1, target: self,   selector: (#selector(self.updateTimer)), userInfo: nil, repeats: true)
    }
}

@objc func updateTimer() {
             print("timer updated")
    }
0 голосов
/ 26 марта 2019

вам необходимо сначала создать функцию updateTimer, чтобы использовать ее в функции выбора функции scheduleTimer. убедитесь, что вы украсили его как объект.

Также заставьте удалить UIViewController в функции селектора, поскольку функция присутствует только в ВАШЕМ текущем классе viewcontroller (InGameViewController), а не в родительском классе UIViewController.

    @objc func updateTimer() {
             print("timer updated")
    }

    timer = Timer.scheduledTimer(timeInterval: 1, target: self,   selector: (#selector(updateTimer)), userInfo: nil, repeats: true)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...