无法完全删除视图控制器?变量被保存?

时间:2017-07-17 23:45:19

标签: ios swift swift3 uitabbarcontroller

好的,我在这里的TabBarController中有我的VC,我无法完全删除视图控制器。我需要删除它并重新实例化,擦干净。但即使在调用removeFromSuperview之后,也会继续调用此函数(我的删除函数)。我知道因为打印了控制台声明:

func resetPodcastVC()
    {
        overallNavigator.selectedIndex = 1 //list view
        trackStatus = .Initializing
        urlStr = ""

        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let vc = storyboard.instantiateViewController(withIdentifier: "podcast")
        var viewcontrollers = overallNavigator.viewControllers
        viewcontrollers?.removeLast()
        self.removeFromParentViewController()
        viewcontrollers?.append(vc)
        overallNavigator.setViewControllers(viewcontrollers, animated: true)
        print("delete", trackStatus)
    }

正如您所看到的,我强行将trackStatus和urlStr重置在顶部。但是在print语句中,trackStatus又回到.Failed,这就是首先触发重置函数的原因:

func updateLoader()
    {
        if(isSwitching)
        {
            loadMessage = "Switch tracks"
        }
        else {
            if (trackStatus == .Initializing)
            {
                loadMessage = "Initializing"
            }
            else if(trackStatus == .Buffering)
            {
                loadMessage = "Buffering"
            }
            else if(trackStatus == .Failed)
            {
                loadMessage = "Failed"

                DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
                    self.resetPodcastVC()
                }
            }
            else {
                loadMessage = "Playing"
            }
        }

在计时器上调用此更新功能。 trackStatus基于传递给它的最后一个URL的AVPlayer状态。

我不知道这里有什么问题。在我尝试完全删除VC的这个实例后,在切换到新索引(索引1是另一个VC)之后,我无法切换到任何其他索引,因为继续调用此重置功能。

如何完全删除此VC并将其重置为新的?

0 个答案:

没有答案