Индикатор неопределенного прогресса не анимация - PullRequest
0 голосов
/ 25 мая 2019

Индикатор прогресса не начинает анимацию, даже если я использую очереди или сплю.

У меня есть функция, которая читает содержимое каталога и для каждого mp3-файла получает теги файла. Также я читаю посты об индикаторе прогресса, но пока мне ничего не помогло.

{
    progressIndicator.startAnimation(self)
    sleep(2)
        if let item = self.outlineView.item(atRow: self.outlineView.selectedRow)  {
             self.arrMp3File.removeAll()
            do {
                let xx = (item as! DirectoryItem).url
                let b = self.getSubDir(path: xx.path)
                print(xx.path)
                for bb in b {
                    self.getTagsFromFile(file: xx.path+"/"+bb)
                }
            }
            self.arrMp3File.sort(by: {
                $0.file < $1.file
            })
            self.loadTagsFromButton.isEnabled = true
            self.tableView.reloadData()
            }
    self.progressIndicator.stopAnimation(self)
}

Я бы хотел показать анимацию, чтобы пользователь знал, что приложение не заморожено. Если я удаляю stopAnimation, он начинает анимацию после того, как файлы отображаются в виде таблицы.

Я добавил этот сон только для проверки анимации.

1 Ответ

0 голосов
/ 28 мая 2019

Я решил это.

{
    if let item = self.outlineView.item(atRow: self.outlineView.selectedRow)  {
        self.arrMp3File.removeAll()
        do {
            let xx = (item as! DirectoryItem).url
            let b = self.getSubDir(path: xx.path)
            DispatchQueue.global(qos: .background).async { [weak self] in
                DispatchQueue.main.async {
                    self?.progressIndicator.isHidden = false
                    self?.progressIndicator.startAnimation(self)
                }
                for bb in b {
                    self?.getTagsFromFile(file: xx.path+"/"+bb)
                }
                DispatchQueue.main.async {
                    self?.arrMp3File.sort(by: {
                        $0.file < $1.file
                    })
                    self?.tableView.reloadData()
                    self?.loadTagsFromButton.isEnabled = true
                    self?.progressIndicator.stopAnimation(self)
                    self?.progressIndicator.isHidden = true
                }
            }
        }
    }   

}
...