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