У меня есть приложение, которое имеет UITabbarController в качестве начального окна (после входа в систему я установил его как rootViewController)
Этот tabbarController имеет 4 различных вкладки, которые являются всеми UIViewControllers, встроенными в UINavigationController.
В моем tabbarController, когда я делаю начальные конфигурации, я устанавливаю вкладки, как показано ниже:
Сначала я создаю viewControllers:
let tableViewController1 = tableViewController1(nibName: "tableViewController1", bundle: nil)
let tableViewController2 = tableViewController2(nibName: "tableViewController2", bundle: nil)
let tableViewController3 = tableViewController3(nibName: "tableViewController3", bundle: nil)
let profileViewController = ProfileViewController(nibName: "ProfileViewController", bundle: nil)
Затем я встраиваю их в навигационные контроллеры:
let navController1 = UINavigationController(rootViewController: tableViewController1)
let navController2 = UINavigationController(rootViewController: tableViewController2)
let navController3 = UINavigationController(rootViewController: tableViewController3)
let navController4 = UINavigationController(rootViewController: profileViewController)
Наконец, добавьте навигационные контроллеры как viewControllers tabbarController
viewControllers = [navController1, navController2, navController3, navController4]
Я посмотрел его в Интернете, и этот способ использования кажется правильным. Пример: https://medium.com/@ITZDERR / uinavigation Controller-and-uitabbarcontroller-programmatic-swift-3-d85a885a5fd0 . Однако я получаю логи cra sh из моего живого приложения, как показано ниже
Crash, child view controller:<UINavigationController: 0x160b3400>
should have parent view controller:<ProfileViewController: 0x16098800>
but actual parent is:<MyApp.MainTabBarController: 0x16064c00>
Проблема здесь в том, что cra sh говорит, что profileViewController должен быть родителем навигационного контроллера, однако я встроил profileViewController внутри navigationController и добавлен как tabbarController viewControllers, так что, на мой взгляд, порядок правильный.
Я искал этот cra sh, и мне кажется, что я пропускаю шаг либо с помощью addChildViewController, либо где-то удаляю родителя , но не смог выяснить.
Я нашел связанную ссылку на это, но ни одна из них не помогла мне решить эту проблему.
Пример ссылки: