簡體   English   中英

在沒有動畫的情況下關閉視圖控制器后立即顯示視圖控制器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM