Как сделать задержку в секундах на приложении таймера? - PullRequest
0 голосов
/ 06 сентября 2018

Я пытаюсь создать временное приложение с небольшим перерывом, например, мне нужна секунда в приложении, которая на самом деле составляет 1,5 секунды в реальном времени. В настоящее время я сталкиваюсь с ошибками при изменении метки времени и не знаю, с чего начать настройку нужного времени по сравнению с реальным временем.

func updateCounter() {
   timeLabel.text = String(counter+=1)
}

override func viewDidLoad()
{
    super.viewDidLoad()

    var timer = Timer()
    var counter = 0
    timeLabel.text = String(counter)
}

Я получаю следующую ошибку.

Невозможно вызвать инициализатор для типа 'String' со списком аргументов типа '(())'

Любая помощь будет отличной.

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018
var aTimer: Timer!
let defaultTimeInterval = 1.5
var counter = 0.0
var adjustedCounter = 0.0
let timeLabel = UILabel()

override func viewDidLoad() {
    super.viewDidLoad()
    aTimer = Timer.scheduledTimer(timeInterval: defaultTimeInterval, target: self, selector: #selector(updateCounter), userInfo: nil, repeats: true)
}

@objc func updateCounter() {
    counter += defaultTimeInterval
    adjustedCounter += 1
    let displayText = "original: \(counter)  adjusted: \(adjustedCounter)"
    timeLabel.text = displayText
    print(displayText)
}
0 голосов
/ 06 сентября 2018

Вы должны сделать переменную counter глобальной и увеличить счетчик в отдельной строке внутри updateCounter():

var counter = 0

func  {
   counter += 1
   timeLabel.text = String(counter)
}

override func viewDidLoad()
{
   super.viewDidLoad()
    var timer = Timer()
    timeLabel.text = String(counter)
}

counter+=1 не возвращает значение, и поэтому вы не можете передать его в качестве аргумента инициализатору String.

...