[英]Present View Controller right after Dismissing View Controller with no animation
我在屏幕上顯示了一個UIImagePickerController
。 當我選擇照片時,我需要關閉PickerController
然后立即呈現另一個PhotoEditController
。 這是我的代碼
picker.dismissViewControllerAnimated(false, completion: {
self.presentViewController(editPhotoVC, animated: false, completion: nil)
})
在關閉舊 VC 和展示新 VC 之間有 0.1 秒的閃光,因此顯示了presentingViewController(self)。 我如何在優雅的解決方案中避免這種情況而不是破解它? 謝謝
標准的實現方式是用動畫關閉第一個視圖控制器 (VC),並用動畫呈現第二個 VC。
但是,根據您的視圖層次結構,您也可以先加載第二個 VC,然后在其上顯示第一個 VC。 這樣簡單地關閉沒有動畫的第一個 VC 應該立即顯示在第二個 VC 下方。
第三種方法,正如 LLooggaann 所建議的,不要忽略第一個 VC 而只是展示第二個 VC。 完成后,一次性關閉整個視圖控制器層次結構。
您可以實例化PhotoEditController
的實例,然后執行以下操作:
instance.willMoveToParentViewController(controllerThatPresentsPicker)
controllerThatPresentsPicker.addChildViewController(instance)
controllerThatPresentsPicker.view.insertSubview(instance.view, belowSubview: picker.view)
instance.didMoveToParentViewController(controllerThatPresentsPicker)
雖然它看起來有點像黑客
這很可能是因為 Dismiss 被發送到呈現選擇器的 VC,它解除了選擇器模式 vc 並在嘗試呈現本身的父 VC 后執行完成處理程序。 一種解決方案是創建您自己的過渡類,您基本上可以從這里復制粘貼代碼來做到這一點
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.