应用程序从后台返回后,UITabBarController selectedIndex不更新

时间:2018-10-26 01:06:07

标签: ios swift xcode

我以编程方式设置了UITabBarController的索引:

public func SelectTab(index: Int) {
    if let tabBarController = tabBarController {
        tabBarController.selectedIndex = index
    }
}

除非应用程序进入后台,否则它可以正常工作。一旦应用程序从后台返回,它将不再起作用。 tabBarController仍设置为正确的索引,但是UI不再使用新的View Controller更新。

我可以点击选项卡栏项,它会更新。但是,使用上述代码以编程方式更改索引将不再起作用。

要恢复UITabBarController的状态,还需要做其他事情吗?

1 个答案:

答案 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)

现在一切正常。