Моя цель прогресс бар ниже панели навигации, которая работает абсолютно нормально, как вы можете видеть на скриншоте:Как правильно обновить UIProgressView под контроллером навигации?
Вот код, который создает это:
class NavigationController: UINavigationController {
let progressView = UIProgressView(progressViewStyle: .Bar)
override func viewDidLoad() {
super.viewDidLoad()
progressView.progress = 0.9
view.addSubview(progressView)
let bottomConstraint = NSLayoutConstraint(item: navigationBar, attribute: .Bottom, relatedBy: .Equal, toItem: progressView, attribute: .Bottom, multiplier: 1, constant: 1)
let leftConstraint = NSLayoutConstraint(item: navigationBar, attribute: .Leading, relatedBy: .Equal, toItem: progressView, attribute: .Leading, multiplier: 1, constant: 0)
let rightConstraint = NSLayoutConstraint(item: navigationBar, attribute: .Trailing, relatedBy: .Equal, toItem: progressView, attribute: .Trailing, multiplier: 1, constant: 0)
progressView.translatesAutoresizingMaskIntoConstraints = false
view.addConstraints([bottomConstraint, leftConstraint, rightConstraint])
progressView.setProgress(0.8, animated: true)
}
}
Но когда Я пытаюсь обновить значение прогресса, нажав кнопку загрузки,
for value in [0.0, 0.25, 0.5, 0.75, 1.0] {
NSThread.sleepForTimeInterval(0.5)
let navC = navigationController as! NavigationController // shorthand
navC.progressView.setProgress(Float(value), animated: true)
let isMainThread = NSThread.isMainThread() // yes, it is main thread
let currentValue = navC.progressView.progress // yes, the value is updated
}
ничего h добавляет, но для последнего значения 1.0
неожиданно прогресс завершен. Что я делаю не так?
не работает. И почему это нужно? Материал, связанный с пользовательским интерфейсом, должен запускаться в основном потоке. –