快速弹出所有视图控制器

时间:2018-08-14 05:10:22

标签: ios swift

我有一个具有以下结构的应用

vehicle->subscribe->removePackage(SUBSCRIBE_PACKAGE_INDEX_200Hz, responseTimeout);
CameraController的viewDidload方法中的

显示first视图,此后在选择图像后显示UploadController。

我的问题是,在uploadController中,如果我在选项卡栏中单击“主页”,则会转到“主页”,但在此之后如果在选项卡栏中单击“相机”,则会直接转到“ UploadController”而不是“ CameraController”,并且不会加载Fusuma。

我想每次单击选项卡栏上的按钮时加载cameraController怎么做?

这是我的代码,用于加载UploadViewController

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

4 个答案:

答案 0 :(得分:2)

实际上,选项卡栏的行为与您在项目中看到的完全一样。 您还想做些其他的事情,我建议的方法是监视标签栏的选择并做您想做的事。

委托类中的此方法观察选项卡的操作:

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

在这种方法下,您可以检查相机标签是否显示上传控制器,然后将导航弹出到根视图,这会导致当您切换回相机标签时,您看到CameraController

愿您找到更好的方法来解决此问题,这是我的解决方案。

答案 1 :(得分:2)

将以下代码添加到CameraNavigationController(假设它是UINavigationController的自定义类。如果不是,请创建一个新代码并在其中添加以下代码),

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

答案 2 :(得分:0)

将标签栏索引设置为根ViewController,然后在此之后显示cameraVC。

答案 3 :(得分:0)

guard let popToVC = self.navigationController?.viewControllers[((self.navigationController?.viewControllers.count)!)-5] else { return }
        navigationController?.popToViewController(popToVC, animated: true)

此解决方案适用于如果您想导航回您的特定视图控制器。我已经使用 -5 导航回第 5 个屏幕。您可以根据根视图层次结构使用您的号码