我正在使用Swift 3,Xcode 8.2。
我有一个视图控制器,上面有一个按钮。当按下按钮时,它将运行下面的buttonPressed函数。它启动了一个异步作业,它需要几秒钟才能完成,在此期间,旋转装置的活动指示器会弹出。工作完成后,我希望活动指示符解散,视图控制器也解散它最初来自的VC。
func buttonPressed() {
// Set up some stuff here
...
// this code block here is to asynchronously run the processing job
// while the activity indicator gear spins
self.displaySpinningGear()
DispatchQueue.main.async {
self.doSomeJobProcessing()
}
self.dismiss(animated: true, completion: nil)
// also dismiss the camera view
self.presentingViewController?.dismiss(animated: true, completion: nil) // error here
}但是,在最后一条语句中,我发现了一个错误:
断言试图在转换过程中关闭表示控制器。( (<_UIAlertControllerAlertPresentationController: 0x109e3b190>) 2017-03-03 21:37:56.833899 EOB-Reader27710 27710:6869686 transitionViewForCurrentTransition未设置,演示过程中表示控制器被解职?(<_UIAlertControllerAlertPresentationController: 0x109e3b190>)
任何帮助都将不胜感激。
发布于 2017-03-04 03:10:10
请记住,当您分派异步时,通常是向后台线程分派以防止UI阻塞。屏幕上的所有组件都需要在主线程上进行修改。因此,从主线程启动进度旋转器,将您的繁重工作分派到后台,然后重新分派到您想要的主线程。this.dismissviewcontroller:animated
将很快用代码进行更新。
https://stackoverflow.com/questions/42591480
复制相似问题