Я создаю UITabbarController
и все содержимое его вкладок программным способом, например:
private func createTabBarController()
{
/* Only create tabBarController once! */
if (RootRouter._tabBarController == nil)
{
let firstPageViewController = FirstPageViewController(nibName: "FirstPageViewController", bundle: nil)
let secondPageViewController = SecondPageViewController(nibName: "SecondPageViewController", bundle: nil)
let thirdPageViewController = ThirdPageViewController(nibName: "ThirdPageViewController", bundle: nil)
let thirdPageNavigationController = ThirdPageNavigationController(rootViewController: thirdPageViewController)
let fourthPageViewController = FourthPageViewController(nibName: "FourthPageViewController", bundle: nil)
thirdPageViewController.loadViewIfNeeded()
RootRouter._tabBarController = UITabBarController()
RootRouter._tabBarController?.viewControllers =
[
firstPageViewController,
secondPageViewController,
thirdPageNavigationController,
fourthPageViewController
]
/* This shouldn't be necessary! */
let tabCount = RootRouter._tabBarController!.viewControllers?.count ?? 0
for i in 0 ..< tabCount
{
RootRouter._tabBarController?.selectedIndex = i
}
}
}
Если я закомментирую последнюю часть этого метода, вкладки не будут правильно инициализированызапуск приложения: отображаются только первые три кнопки вкладок, и ни одна из них не выделена.
Если последняя часть кода включена, она будет работать и выглядеть правильно, однако такой подход выглядит как взлом, и я думаю, что он может привести кпобочные эффекты позже.Что-то мне не хватает, чтобы правильно инициализировать все вкладки (и кнопки вкладок)?