У меня есть приложение, в котором пользовательский интерфейс настраивается программно, а не с использованием раскадровок. Я застрял на том, как узнать, когда вкладка была переключена ... и когда она была переключена, я хочу иметь возможность назначить свойство под названием "userSettings" в каждом контроллере представления, чтобы я мог передавать этот объект и вызывать методы соответственно.
Вот мой делегат приложения:
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var contentVC: BMContentViewController?
var settingsVC: BMSettingsViewController?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
window = UIWindow(frame: UIScreen.main.bounds)
contentVC = BMContentViewController()
contentVC?.view.backgroundColor = .clear
contentVC?.tabBarItem.title = "Content"
settingsVC = BMSettingsViewController()
settingsVC?.view.backgroundColor = .clear
settingsVC?.tabBarItem.title = "Settings"
let tabbarController = UITabBarController()
tabbarController.viewControllers = [(contentVC ?? UIViewController()), settingsVC ?? UIViewController()]
self.window?.rootViewController = tabbarController
self.window?.makeKeyAndVisible()
return true
}
func applicationWillResignActive(_ application: UIApplication) {}
func applicationDidEnterBackground(_ application: UIApplication) {}
func applicationWillEnterForeground(_ application: UIApplication) {}
func applicationDidBecomeActive(_ application: UIApplication) {}
}
BMContentViewController () и BMSettingsViewController () имеют свойство с именем:
var userSettings: BMUserSettings?
Я запускаю приложение выключено в BMContentViewController (). Когда я переключаю вкладки, я хочу иметь возможность назначать userSettings в BMSettingsViewController () для userSettings, который находится в BMContentViewController (). userSettings является центральным объектом в моем приложении, и вместо создания синглтона я пытаюсь заставить приложение работать, просто передавая ссылку на объект другим контроллерам представления.
Я не уверен если это возможно, обнаруживая, когда вкладка была переключена и передавая значение, или если мне нужно использовать шаблон делегата вместо этого?
Как я могу выполнить sh это? Я пытаюсь избежать использования синглетонов.