好的,我在这里的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并将其重置为新的?