RxSwift и MVVM сами по себе не определяют, как осуществляется переход между экранами.Наиболее распространенным подходом представляется использование FlowControllers .Вот хорошее чтение для ознакомления с концепцией.
Важный вывод: FlowControllers работают для любого экранного подхода, будь то MVC или MVVM / RxSwift. Но , который предполагает, что ваши экраны MVC (то есть сегменты viewControllers и / или раскадровки) не содержат зависимостей от других экранов (посредством сегментирования или проталкивания / извлечения контроллера представления и тому подобного).Если вы хотите смешать MVC и MVVM / RxSwift, скорее всего, вам сначала нужно убрать контроллеры представления из любой логики перехода экрана.
По моему опыту, критически важным аспектом обеспечения взаимозаменяемости строительных блоков является ограничение реактивность только для привязки MVVM к части экрана.Это означает, что FlowControllers не должен реагировать, чтобы использовать любой подход, выбранный для экранов.Делая это позже, гораздо проще заменить RxSwift, который использует какой-то другой подход, например, например, Combine
от Apple.
В вашем последнем вопросе нет серьезных ограничений для вызова функции target-c из Swift, RxSwift не имеет значения.Это не тот случай, наоборот, и чистые классы и структуры Swift недоступны непосредственно из target-c.Но при правильном использовании FlowControllers это не должно быть большой проблемой.Потенциальной проблемой может быть совместное использование моделей данных / сетевого API и т. Д., Если вы используете чистый подход Swift с его новыми конструкциями (Codeable и т. Д.).