在viewWillDisappear上显示活动指示器

时间:2016-06-07 11:47:14

标签: ios swift core-data uiactivityindicatorview

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
  }
}

但是,即使在延迟期间可见该视图,我也无法更新视图。我只是想以某种方式显示正在发生的事情而不是延迟2-3秒。但我似乎无法显示活动指示器视图! (我使用主线程来更新视图!)

使用:

context.performBlock 

解决了滞后问题但导致错误,因为我的下一个viewControllers依赖于已完成更新的Core Data。特别是我得到了

  

"由于未捕获的异常终止应用程序' NSGenericException',   原因:' ***收集< __ NSCFSet:0x12824cde0>在变异的同时   被列举。'"

1 个答案:

答案 0 :(得分:0)

你在这里做什么来覆盖viewWillDisappear方法,所以你过早地调用超级引用,试试这个:

override func viewWillDisappear(animated: Bool) {
    //other things
    if anySettingChanged {
      settingsChanged()
    }
    super.viewWillDisappear(animated)
}