Я пытаюсь вызвать пользовательский метод в моем подклассе UITabBarController
внутри одного из контроллеров дочерних элементов. Я создал экземпляр класса CustomTabBarController
в качестве контроллера корневого представления в AppDelegate.swift
, однако свойство .tabBarController
на моих дочерних контроллерах представления относится к классу UITabBarController
вместо CustomTabBarController
.Методы подкласса UITabBarController недоступны на контроллерах дочерних элементов?
Почему это происходит? Возможно ли, что свойство .tabBarController
на моих контроллерах представления отражает мой подкласс вместо класса UITabBarController
по умолчанию?
Вот мой подкласс:
import UIKit
class CustomTabBarController: UITabBarController, UITabBarControllerDelegate, LoginControllerDelegate {
let defaults = UserDefaults.standard
override func viewDidLoad() {
super.viewDidLoad()
self.delegate = self
setupViews()
}
override func viewDidAppear(_ animated: Bool) {
checkLoginStatus()
}
func checkLoginStatus() {
if defaults.bool(forKey: "isLoggedIn") == false {
let loginController = LoginController()
loginController.delegate = self
present(loginController, animated: true, completion: nil)
}
}
func loginControllerDidDismiss() {
print("Delegation is working...")
}
func setupViews() {
let homeController = HomeController()
homeController.tabBarItem = CustomTabBarItem(title: "Home", imageNames: ["courthouse-icon-unselected", "courthouse-icon"])
let homeNavController = UINavigationController(rootViewController: homeController)
homeNavController.navigationBar.applyCustomStyle()
tabBar.tintColor = UIColor(red:0.18, green:0.34, blue:0.65, alpha:1.00)
self.setViewControllers([homeNavController], animated: true)
}
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
print(viewController.title)
return true
}
}
На мой взгляд контроллера, я хотел бы получить доступ к этому классу так:
import UIKit
class HomeController: ListController {
override func viewDidLoad() {
super.viewDidLoad()
self.title = "Home"
self.tabBarController??? // Right now this is a UITabBarController, but I would like to it be a CustomTabBarController
}
}
Не могу поверить, что я не пытался его отливки в качестве правильного класса. Это имеет большой смысл, и для моего использования он отлично работает! Благодаря! – SpacemanDeMars