【问题标题】:Why is popViewControllerAnimated taking so long to run?为什么 popViewController Animated 需要这么长时间才能运行?
【发布时间】:2015-08-05 03:08:07
【问题描述】:

我有一个辅助视图控制器,允许我从相机胶卷中删除图像。问题是,completionHandler 会像预期的那样触发,但 popViewController 实际上似乎并没有运行大约 8 秒。它肯定会触发,因为我可以看到可选输出。我检查了是否只是弹出,它运行正常。我检查了 viewWillDisapear 事件,它也触发得很晚,考虑到导航控制器尚未弹出当前 viewController 的视图,我预计会发生这种情况。

PHPhotoLibrary.sharedPhotoLibrary().performChanges({

    PHAssetChangeRequest.deleteAssets(assetsToDelete)
        return
    }, completionHandler: { success, error in
       if success {
           println("success")
           println(navigationController.popViewControllerAnimated(true))
           println("so slow")
       }
       if let error = error {
           println(error)
       }
       return
})

【问题讨论】:

    标签: ios swift photokit


    【解决方案1】:

    文档是这样说的:

    Photos 同时执行更改块和完成处理程序块 在任意串行队列上。更新您的应用程序的 UI 作为一个结果 更改,将该工作分派到主队列。

    导航控制器需要从主线程执行,所以你需要将调用包装成类似

    dispatch_async(dispatch_get_main_queue()) { 
        navigationController.popViewControllerAnimated(true)
    } 
    

    【讨论】:

    • 我正准备把它放进去。经过一些试验和错误。非常感谢!
    【解决方案2】:

    对于 Swift 3

    DispatchQueue.main.async() {
        self.navigationController?.popViewController(animated: true)
    }
    

    【讨论】:

      猜你喜欢
      • 2017-09-22
      • 1970-01-01
      • 2020-11-08
      • 2019-11-13
      • 1970-01-01
      • 1970-01-01
      • 2020-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多