Мое приложение использует TabBarController в качестве контроллера root для навигации по 5 основным c вкладкам. На каждой из этих вкладок есть NavigationControllers для отображения контроллеров представления. Последняя вкладка, MenuViewController, позволяет пользователю переключать ColorTheme приложения. Когда пользователь нажимает кнопку для изменения цветовой темы, в контроллере навигации другой вкладки может быть любое количество ViewController в стеке навигации.
Мне бы хотелось, чтобы после входа в систему пользователь нажимал на кнопку, чтобы переключать тему из MenuViewController, Все вкладки (включая вкладку с MenuViewController) сбрасываются так, что когда пользователь нажимает на любую из них, эти вкладки открываются, как будто они открываются в первый раз. Так что все цвета могут быть сброшены.
Я попытался настроить контроллеры представления с вкладками вида, как это
let tabBarControllers = (self.tabBarController?.viewControllers)!
self.tabBarController?.setViewControllers(tabBarControllers, animated: true)
Я также попытался перенести стек навигации на root, но всплывающее окно оставляет меня с самый нижний viewController в стеке навигации, но цветовая тема остается старой.
for i in 0..<tabBarControllers.count - 1 {
let navController = tabBarControllers[i].navigationController as? UINavigationController
navController?.popToRootViewController(animated: false)
}
Ни одна из этих работ. Есть ли способ, которым tabBarController сбрасывается таким образом, чтобы при следующем нажатии на вкладку он запускался, как будто вкладка запускается в первый раз. Пожалуйста, дайте мне знать, если у вас есть какие-либо предложения. Спасибо.