Каков наилучший способ передачи данных в UITabBarController из UIViewController в Swift 3?Передача данных в Programmatic UITabBarController
Я создаю приложение для одного вида, и у меня есть представление деталей, которое необходимо разделить на 4 секции. Я хочу использовать TabBar для достижения этого и передать идентификатор из списка в UIViewController, а затем передать это значение для каждого отдельного UIViewController в TabBar. Это значит, что я могу вызвать веб-метод, который принимает идентификатор для заполнения данных в отдельных представлениях.
Приложение конвертируется из Obj-C с раскадровки в Swift 3 без раскадровки, поэтому у меня нет доступа к обычным определениям segue, которые у меня были. Я также использовал UserDefaults в версии Obj-C, чтобы сохранить выбранный идентификатор, а затем вытащить его снова в отдельных видах. Однако я не убежден, что это лучший способ добиться того, что я хочу.
До сих пор я пробовал пропустить, получив доступ к классу UITabBarController в исходном UIViewController и установив переменную в ViewController, а затем передав ее на ViewController на первой вкладке. Это работает, если я перехожу от UIViewController к UIViewController (первое представление в TabBar, но выполняется автономно), но не работает, когда целевым контроллером является TabBarController.
Я также пробовал отправлять уведомление в ViewControler и наблюдать результат в TabBarController. Однако код наблюдения никогда не вызывается. Я использую:
Selected Row:
NotificationCenter.default.post(name: notificationName, object: selectedRowID)
Тогда в ViewDidLoad на TabBarController (также попытался viewDidAppear и viewWillAppear):
NotificationCenter.default.addObserver(self, selector: #selector(setID), name: notificationName, object: nil)
Вышеприведенные работает, но только тогда, когда я выбираю вторую вкладку, а затем вернитесь к первой вкладке, а затем ее дважды вызываете!?!?!
Я также пробовал класс Singleton, но это просто не работает.
Использует UserDefaults действительно лучший способ сделать это?