У меня есть следующая функция на iOS, которая выполняет работу с пользовательским интерфейсом над TableView, и проблема в том, что, если она начинает дольше 0,5 сек. пользователь должен отобразить счетчик, чтобы экран не выглядел так, как будто он застыл.
func updateForm(with rowItems: [RowItem]) {
self.tableView.beginUpdates() // performance tweak.
let viewControllerName = String.init(describing: self.classForCoder) // id
var defaultSection = Form.createSectionWith(tag: viewControllerName, in: form)
// MARK: - update rows
let allRows = self.form.allRows
let startTime = CFAbsoluteTimeGetCurrent()
var showSpinner = false
for (index, item) in rowItems.enumerated() {
.
.
.
<TableView processing work on 100's of rows>
.
.
.
// Evaluate our running time for this process loop, and display spinner if we're past a threshold of seconds.
let timeElapsed = CFAbsoluteTimeGetCurrent() - startTime
if timeElapsed > 0.5 && showSpinner == false {
showSpinner = true
self.showActivityIndicator(withStatus: "processing") // {NEVER GETS DISPLAYED}
}
} // for (index, item) ...
Конечно, когда я звоню на showActivityIndicator
, он никогда не отображается. *
Как я могу прервать и приостановить работу пользовательского интерфейса, чтобы показать анимацию showActivityIndicator
spinner, а затем продолжить цикл?