2017-01-14 2 views
2

У меня есть индикатор выполнения, который следует обновлять после каждого шага. шаги могут быть очень высокими, скажем, 50.000. При вводе этого большого числа индикатор выполнения ничего не делает, когда iPhone вычисляет. Когда iPhone будет выполнен, индикатор выполнения мгновенно достигнет 1,0 (макс.). Это мой код:Индикатор выполнения не будет обновляться при циклическом перемещении

for x in 1...timesToSimulate{ 
     var progress: Float = Float(x)/Float(timesToStimulate) 
     progressBarView.setProgress(progress, animated: true) 
} 

Расчет не такой уж сложный, но я делаю что-то неправильно, но не вижу, что. Ты знаешь что это?

+0

Возможный дубликат [Обновление пользовательского интерфейса с помощью диспетчерского \ _Async в Swift] (http://stackoverflow.com/questions/26743367/updating-the-ui-using-dispatch- async-in-swift) – ebby94

+0

Вы делаете это на основной теме? –

+0

Я не знаю, что нить, я никогда ничего не менял на темы. Просто нормальная нить, которую я думаю – Petravd1994

ответ

-1

Причина, вероятно, в том, что все ваши расчеты выполнены на основном протекторах. Пользовательский интерфейс обновляется только после того, как ваша функция вернется (после чего вы достигли максимального прогресса). Если вы хотите постепенно обновлять индикатор выполнения, вам необходимо изменить ход асинхронно.

Например:

for x in 1...timesToSimulate{ 
     let progress: Float = Float(x)/Float(timesToSimulate) 
     DispatchQueue.main.asyncAfter(deadline: .now() + Double(x) * 0.1) { 
      self.progressBarView.setProgress(progress, animated: true) 
     } 
    } 
+0

Проблемы остаются неизменными при изменении кода на ваш ответ :( – Petravd1994

+0

Вы уверены, что не настроите прогресс нигде в своем коде? Код, который я написал, отлично работает для меня. –

+0

Странно, код после DispatchQueue не будет выполняться. Индикатор выполнения ничего не делает ... Я опустошил свой код только вашей строкой кода. Он не будет выполнен. Когда я пытаюсь сделать печать («?») печать не будет отображаться, но функция, безусловно, называется. Я не знаю, что делать. – Petravd1994

Смежные вопросы