Есть множество способов сделать это. Упомянем некоторые из них.
- Вы можете использовать Центр уведомлений
Пример
class VC1: UIViewController {
var orderInfo: Order!
func updateOrder() {
var orderDict = ["orderInfo":orderInfo]
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "orderInfoUpdated"), object: nil, userInfo: orderDict)
}
}
// The receiving end
class VC2: UIViewController {
var orderInfo: Order!
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(doSomething(_: )), name: NSNotification.Name(rawValue: "orderInfoUpdated"), object: nil)
}
func doSomething(_ notification: NSNotification) {
if let orderInfo = notification.userInfo?["orderInfo"] as? Order {
// Do something
}
}
}
Вы можете создать службу «Состояние приложения», в которой вы используете одноэлементный шаблон
, делая информацию пользователя доступной во всех представлениях
Пример:
class AppState {
static let shared = AppState()
var orderInfo: Order!
...
}
На вашем ViewController
class ViewController: UIViewController {
func doSomeWork() {
print(AppState.shared.orderInfo)
}
}
Вы можете сделать его глобальным (не рекомендуется)