Ios Swift pop所有视图控制器

Ios Swift pop所有视图控制器,ios,swift,Ios,Swift,我有一个应用程序具有以下结构 --TabBarController --HomeController --CameraNavigationController --CameraController --UploadController --ProfileController 在viewDidload中,CameraController的方法显示view,然后在选择图像后显示UploadController 我的问题是当在uploadController中时,如果我在

我有一个应用程序具有以下结构

--TabBarController
  --HomeController
  --CameraNavigationController
    --CameraController
    --UploadController
  --ProfileController
在viewDidload中,CameraController的方法显示view,然后在选择图像后显示UploadController

我的问题是当在uploadController中时,如果我在选项卡栏中单击Home,它将转到Home,但如果我在此之后在选项卡栏中单击Camera,它将直接转到uploadController而不是CameraController,并且不会加载Fusuma

我想在每次单击选项卡栏中的按钮时加载cameraController。如何操作

这是我加载UploadViewController的代码

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

    let vc = ImageUploadViewController()
    vc.selectedImage = image

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

}

将tabbar index设置为root ViewController,然后预发布cameraVC。

将tabbar index设置为root ViewController,然后预发布cameraVC。

实际上,tabbar的行为正是您在项目中看到的。 您还想做一些额外的事情,我建议您监视选项卡栏的选择,然后做您想做的事情

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

func tabBarController(_ tabBarController: UITabBarController, 
                     didSelect viewController: UIViewController)
在这种方法中,您可以检查您的相机选项卡是否显示上载控制器弹出到根视图的导航,这导致当您切换回相机选项卡时,您会看到CameraController

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

    let vc = ImageUploadViewController()
    vc.selectedImage = image

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

}

希望您能找到更好的方法来处理这个问题,这是我的解决方案。

实际上,tabbar的行为正是您在项目中看到的。 您还想做一些额外的事情,我建议您监视选项卡栏的选择,然后做您想做的事情

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

func tabBarController(_ tabBarController: UITabBarController, 
                     didSelect viewController: UIViewController)
在这种方法中,您可以检查您的相机选项卡是否显示上载控制器弹出到根视图的导航,这导致当您切换回相机选项卡时,您会看到CameraController

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

    let vc = ImageUploadViewController()
    vc.selectedImage = image

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

}

希望您能找到更好的方法来处理此问题,这是我的解决方案。

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


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

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


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

应用程序运行正常。您有一个选项卡栏控制器&当您在选项卡栏中单击Camera时,最初它将显示Camera Controller,然后上载控制器,所以在导航顶部我们有上载控制器。所以,当你们从另一个标签页回到相机,它仍然会显示上传控制器,因为它是在顶部。尝试从上载控制器弹出到摄影机控制器,切换选项卡,然后您将了解其工作原理。@bhatejaud每次单击选项卡栏中的按钮时,我都要加载cameracontroller如何实现此目的?在更新控制器的viewDidDissapear()方法中,添加以下内容:1。如果您正在使用导航控制器,请添加:self.navigationController.popViewController()2。如果您正在演示uploadController,请添加以下内容:self.disclose()应用程序工作正常。您有一个选项卡栏控制器&当您在选项卡栏中单击Camera时,最初它将显示Camera Controller,然后上载控制器,所以在导航顶部我们有上载控制器。所以,当你们从另一个标签页回到相机,它仍然会显示上传控制器,因为它是在顶部。尝试从上载控制器弹出到摄影机控制器,切换选项卡,然后您将了解其工作原理。@bhatejaud每次单击选项卡栏中的按钮时,我都要加载cameracontroller如何实现此目的?在更新控制器的viewDidDissapear()方法中,添加以下内容:1。如果您正在使用导航控制器,请添加:self.navigationController.popViewController()2。如果您正在演示uploadController,请添加以下内容:self.disclose()