在 viewWillDisappear
上,我需要更新很多 Core Data
记录,这样做会在我从一个 viewController 移动到另一个(通过 Tab View Controller)时造成延迟.)
在我的 viewWillDisappear
方法中,我调用了 settingsChanged()
,如下所示:
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
//other things
if anySettingChanged {
settingsChanged()
}
}
func settingsChanged() {
// attempt to display activity indicator view
context.performBlockAndWait { // on private queue
// update a lot of Core Data records
// attempt to hide activity indicator view
}
}
但是,尽管 View 在滞后期间可见,但我无法更新消失的 View 。我只是想以某种方式显示正在发生的事情,而不是延迟 2-3 秒。 但我似乎无法显示事件指示器 View ! (我使用主线程来更新 View !)
使用:
context.performBlock
解决了滞后问题,但导致错误,因为我的下一个 viewControllers 依赖于 Core Data 完成更新。具体我得到
"Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSCFSet: 0x12824cde0> was mutated while being enumerated.'"
最佳答案
你在这里做什么是为了覆盖 viewWillDisappear
方法,所以你过早地调用了 super 引用,试试这个:
override func viewWillDisappear(animated: Bool) {
//other things
if anySettingChanged {
settingsChanged()
}
super.viewWillDisappear(animated)
}
关于ios - 在 viewWillDisappear 上显示事件指示器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37678541/