簡體   English   中英

快速彈出所有視圖控制器

[英]Swift pop all view controllers

我有一個具有以下結構的應用程序

--TabBarController
  --HomeController
  --CameraNavigationController
    --CameraController
    --UploadController
  --ProfileController

在CameraController的viewDidLoad方法顯示fusuma視圖並隨后在選擇的圖像顯示UploadController。

我的問題是在uploadController中,如果我在選項卡欄中單擊“主頁”,則轉到“主頁”,但是如果此后在選項卡欄中單擊“相機”,則直接轉到“ UploadController”而不是“ CameraController”,並且不會加載Fusuma。

我想每次在選項卡欄中單擊按鈕時加載cameraController怎么辦?

這是我的代碼來加載UploadViewController

 func fusumaImageSelected(_ image: UIImage, source: FusumaMode) {

    let vc = ImageUploadViewController()
    vc.selectedImage = image

    self.navigationController?.pushViewController(vc, animated: true)

}

實際上,標簽欄的行為與您在項目中看到的完全一樣。 您還想做些其他的事情,我建議的方法是監視標簽欄的選擇並做您想做的事情。

委托類中的此方法觀察選項卡的操作:

func tabBarController(_ tabBarController: UITabBarController, 
                     didSelect viewController: UIViewController)

使用這種方法,您可以檢查相機選項卡是否顯示上傳控制器,然后將導航彈出到根視圖,這會導致當您切換回相機選項卡時,您看到CameraController

願您找到更好的方法來解決此問題,這是我的解決方案。

將以下代碼添加到CameraNavigationController (假設它是UINavigationController的自定義類。如果不是,請創建一個新類並在其中添加以下代碼),

override func viewWillDisappear(_ animated: Bool) {
    self.popToRootViewController(animated: false)
}

將標簽欄索引設置為根ViewController,然后在此之后顯示cameraVC。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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