Сбросить все вкладки контроллера Tabbarview, как будто вкладки запускаются впервые - PullRequest
0 голосов
/ 28 января 2020

Мое приложение использует 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 сбрасывается таким образом, чтобы при следующем нажатии на вкладку он запускался, как будто вкладка запускается в первый раз. Пожалуйста, дайте мне знать, если у вас есть какие-либо предложения. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...