Я должен изменить свой контроллер корневого представления в соответствии со статусом входа в систему.
Мне пришлось изменить свой файл AppDelegate и создать класс MainNavigationController, который расширяет UINavigationController.
** ПРОБЛЕМА: - **
Когда определенный корневой класс загружен, он выдает все переменные на выходе как nil.
КОД
class PostalViewController: UIViewController {
@IBOutlet weak var btn_currentLocation: UIButton!
@IBOutlet weak var btn_viewAccount: UIButton!
@IBOutlet weak var in_postCode: UITextField!
let locManager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
// Here it gives a nil on btn_currentLocation
btn_currentLocation.layer.cornerRadius = 15.0
btn_currentLocation.layer.masksToBounds = true
btn_currentLocation.setButtonGradient(colorOne: UIColor(named: "lightBlue")!, colorTwo: UIColor(named: "gradient2")!)
btn_viewAccount.layer.cornerRadius = 15.0
btn_viewAccount.layer.masksToBounds = true
// Add search button in post code text field
let searchButton = UIButton(type: .custom)
searchButton.setImage(UIImage(named: "iconSearch"), for: .normal)
searchButton.frame = CGRect(x: CGFloat(in_postCode.frame.size.width - 25), y: CGFloat(5), width: CGFloat(25), height: CGFloat(25))
searchButton.addTarget(self, action: #selector(self.actionSearch), for: .touchUpInside)
in_postCode.rightView = searchButton
in_postCode.rightViewMode = .always
}
AppDelegate.swift (только эта конкретная функция)
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
window = UIWindow(frame: UIScreen.main.bounds)
window?.makeKeyAndVisible()
window?.rootViewController = MainNavigationController()
return true
}
MainNavigationController.swift
class MainNavigationController : UINavigationController{
var isLogin : Bool?
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
isLogin = UserDefaults.standard.bool(forKey: "isLogin")
print("IsLogin --->", isLogin!)
if (isLogin != nil && isLogin!){
perform(#selector(postalController), with: nil, afterDelay: 0.01)
}else{
perform(#selector(showHomeContoller), with: nil, afterDelay: 0.01)
}
}
@objc func showHomeContoller () {
let homepageController = HomePageViewController()
present(homepageController, animated: true, completion: nil)
}
@objc func postalController () {
let postalController = PostalViewController()
viewControllers = [postalController]
}
}
EDIT
Я добавил скриншот ниже, мне нужно переключить свое корневое представление между HomePage и Postal