我以编程方式设置了UITabBarController的索引:
public func SelectTab(index: Int) {
if let tabBarController = tabBarController {
tabBarController.selectedIndex = index
}
}
除非应用程序进入后台,否则它可以正常工作。一旦应用程序从后台返回,它将不再起作用。 tabBarController仍设置为正确的索引,但是UI不再使用新的View Controller更新。
我可以点击选项卡栏项,它会更新。但是,使用上述代码以编程方式更改索引将不再起作用。
要恢复UITabBarController的状态,还需要做其他事情吗?
答案 0 :(得分:0)
最终找到了解决方案。万一其他人为之挣扎,问题出在我从后台回来的路上。我正在重新加载根视图,在尝试选择选项卡之前,它似乎可以正常工作。
问题:我正在在applicationWillEnterForeground中重新加载主视图:
let home = UIStoryboard(name: "Main", bundle: nil).instantiateInitialViewController()
self.window?.rootViewController = home
解决方案:在applicationDidEnterBackground中,我关闭了根视图上方显示的所有控制器:
self.window?.rootViewController?.dismiss(animated: false, completion: nil)
然后,在applicationWillEnterForeground中,我只选择了选项卡:
SelectTab(index: 0)
现在一切正常。