Почему Swift 4.2 переписывает ярлык? - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь динамически написать UILabel на основе сдвигов в iPhone ориентации устройства, используя только gravityValueY. В движении устройства, когда ориентация смещается, также изменяется значение силы тяжести Y, заставляя вычислять относительное изменение угла относительно плоской ориентации - это приложение для гольфа, а расстояние до цели регулируется с помощью тригонометрии. После завершения расчета данные отправляются в функцию, которая преобразует числовое значение c (Int) в строку, рекомендующую клюшку для гольфа достичь цели, а затем обновляет метку в пользовательском интерфейсе. Пример кода в функции о том, как это делается в общем случае:

func setLabel(GravityValueYCalc: Int) {    

DispatchQueue.main.async {
    let newlabelBasedOnGravityValueY = String(GravityValueYCalc)
    self.OldLabel.text = newlabelBasedOnGravityValueY
    }
}

Проблема заключается в том, что метка перезаписывается неправильными значениями - см. Пример на прикрепленном снимке экрана. Я знаю, что это простой пример, просто есть много кода, поэтому пытаюсь сузить его. Я проверил ряд возможностей, например, код не генерирует несколько значений и обновляет интерфейс быстрее, чем может заметить глаз; код не записывает другое значение из другого места (это единственный вызов функции setLabel). Кроме того, в журналах XCode не возникает никаких ошибок. Любые идеи? Спасибо.

Note, the label appears overwritten

...