Я пытаюсь использовать Rxswift в приложении, встроенном в Tabbar Controller.
У меня есть три контроллера вида на панели вкладок. Есть несколько подписок на всех контроллерах представления. Но для простоты скажем, что первый и второй контроллеры представления подписываются на третий контроллер представления, чтобы получить некоторые значения.
Я подписан на третий контроллер вида как закодированный;
func startSubscription() {
let settingsNavigationVC = self.tabBarController?.viewControllers![2] as! UINavigationController
let settingsVC = settingsNavigationVC.topViewController as! SettingsViewController
settingsVC.selectedUser.subscribe(onNext: { [weak self] user in
self?.userToShow = user
}).disposed(by: disposeBagForFirst)
}
Это прекрасно работает, если перед любой манипуляцией с данными нажимаются все вкладки, поэтому может быть запущена вся подписка и все приложение работает нормально. Но если пользователь непосредственно подключается к третьему виртуальному каналу после загрузки приложения и вносит изменения. Затем данные на первом виртуальном канале обновляются, поскольку они уже загружены при запуске приложения, но данные на втором виртуальном канале не изменяются, поскольку подписка еще не была выполнена, поскольку представление не было загружено до изменений, внесенных в третьем виртуальном канале.
Я пытался сделать это с помощью метода экземпляра vc, но он тоже не работает, потому что с контроллерами панели вкладок нет экземпляров, которые бы создавали экземпляры более одного раза, как я полагаю.
Мой вопрос; как я могу убедиться, что все представления загружаются до того, как пользователь взаимодействует с приложением, или как мне изменить метод моей подписки, чтобы он работал независимо от того, нажали ли все вкладки (загружены представления).
Заранее спасибо.