Здравствуйте!
Делаю свою ToDo из трех экранов: список задач, удаленные таски и информация.
Все это управляется через TabBarController.
В AppDelegate:
func application(_ application: UIApplication, didFinishLaunchingWithOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
window = UIWindow(frame: UIScreen.main.bounds)
window?.makeKeyAndVisible()
window?.overrideUserInterfaceStyle = .light
let mainTabBarVC = TabBarController()
window?.rootViewController = mainTabBarVC
return true
}
Класс TabBarController:
class TabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
createTabBarController()
}
func createTabBarController() {
let tabBarController = UITabBarController()
tabBarController.tabBar.tintColor = .systemPink
let taskListVC = UINavigationController(rootViewController: TaskListViewController())
taskListVC.title = "Task List"
taskListVC.tabBarItem = UITabBarItem(title: "Task List", image: UIImage(systemName: "list.bullet.rectangle.portrait"), tag: 0)
let deletedTaskVC = UINavigationController(rootViewController: DeletedTaskViewController())
deletedTaskVC.title = "Deleted Tasks"
deletedTaskVC.tabBarItem = UITabBarItem(title: "Deleted Tasks", image: UIImage(systemName: "delete.left"), tag: 1)
let infoVC = UINavigationController(rootViewController: InfoViewController())
infoVC.title = "Information"
infoVC.tabBarItem = UITabBarItem(title: "Information", image: UIImage(systemName: "info.circle"), tag: 2)
tabBarController.setViewControllers([taskListVC, deletedTaskVC, infoVC], animated: true)
self.view.addSubview(tabBarController.view)
}
}
Проблема в том, что TabBarItem’ы не реагируют на нажатия (не показывают экраны).
Т.е. после загрузки приложения на экране есть TaskList и TabBar. Можно кликать на иконки - они меняют свое состояние как будто переход по экранам происходит, но сам экран не меняется - перманентно висит TaskListViewController.
Файлы под все классы TaskListViewController, DeletedTaskViewController и InfoViewController есть.
Если класс TabBarController не выносить в отдельный файл, а реализовать его в AppDelegate, то код работает, все хорошо. Но мне хочется сделать именно отдельным файлом.
Подскажите, пожалуйста, в чем может быть проблема?
P.s. Я совсем только учусь и возможно не знаю какую-то очень очевидное и необходимое действие. Но после просмотра многих туториалов уже многое перепробовано, и просто руки опустились найти, что здесь не так.