以编程方式切换选项卡时清除根视图控制器的变量

时间:2019-05-14 21:53:28

标签: swift uitabbarcontroller viewcontroller

我有一个Storyboard / Root ViewController作为我应用程序的第三个选项卡。用户在该选项卡上选择一个图像,并写上标题,并将其存储为变量。从根视图控制器,用户通过传递变量(即图像和文本)的segue进入预览屏幕。用户从该屏幕发布对象。从发布按钮中,我弹出视图控制器,并以编程方式导航到应用程序的第一个标签。一切正常,但是问题是当我然后导航回第三个选项卡时,存储的变量仍然存在,并且希望清除它们。

我看过很多关于保留变量的文章,但是没有关于如何重置它们的文章。我尝试使用viewWillDissapear,但我不希望在使用segue时清除它们,因为我希望用户能够返回并根据需要进行一些更改。

具有正确答案的更新代码

@IBAction func postButtonPressed(_ sender: Any) {




        PostFunction.createPost(image: self.postImage, postText: self.hashtag) { (true) in


            self.tabBarController?.selectedIndex = 0

            let tab3 = self.tabBarController!.viewControllers![2] as! UINavigationController
            let vc = tab3.viewControllers.first as! PostHomeVC
            vc.clear()

            self.navigationController?.popViewController(animated: false)
        }
    }

关于如何通过上述方法“重置” rootviewcontroller的任何建议?

谢谢!

1 个答案:

答案 0 :(得分:1)

  

我正在弹出视图控制器,并以编程方式导航到我的应用程序的第一个标签

在以编程方式切换到第一个标签之前,先做

let tab3 = self.tabBarController.viewControllers[2] as! UINavigationController
let vc = tab3.viewControllers.first as! VCName
vc.clear()

let vc = self.navigationController!.viewControllers.first as! VCName
vc.clear()

并根据需要在vc中编写该clear方法