使用RxSwift在视图控制器之间进行通信

如果您仍然不确定如何开始使用RxSwift,那么本文适合您。

我已经阅读了很多有关RxSwift的文章,但是从了解理论到实际利用该知识是一条很深的弯路。

在本文中,我们将创建一个使用RxSwift的非常简单的iOS应用程序。 我们将使用RxSwift的概念并将其应用到此应用程序中。 我将跳过RxSwift的基础知识,因为有许多精美的文章对其进行了解释。 作为参考,您可以在这里看看。 这是塞巴斯蒂安·博尔特(Sebastian Boldt)a的一篇可爱的文章。

我们将在此应用程序中采用一个非常基本的方案,即使视图控制器使用RxSwift进行通信。

让我们开始吧…

基本设定

在Xcode中创建一个新项目,并为该项目初始化pod,然后在pod文件中添加以下内容。

替换YOUR_TARGET_NAME ,然后在Podfile目录中键入:

$ pod安装

快速转发…。

添加一个新的View控制器(我将其命名为N ewViewController ),以便您的主故事板如下所示:

当您点击更改背景按钮时,它将打开新的视图控制器,而当您点击NewViewController上的任何按钮时,它将更改MainViewController的颜色。

通过已建立的可可模式进行交流

如果您使用已建立的可可模式来构建它,那么下一步将是添加委托模式,以便我们的N ewViewController可以与M ainViewController对话。

通过可观察对象进行通信

打开您的N ewViewController,将以下变量添加到您的视图控制器类中:

在这里,我们创建了一个名为selectedColorSubject的Subject 这将发出选定的颜色,并发出一个名为selectedColor的Observable,它公开了可观察的主题。

要了解主题和可观察对象,请参阅 上面 提到的 链接

我们将添加一个名为changeColor的函数,当按下任意按钮时它将负责发出新的颜色值,一旦发出该颜色值,我们应导航回到上一屏幕。

我们的函数如下所示:

selectedColorSubject.onNext(color)发出新的颜色值,然后我们向后导航。

确保我们的按钮动作事件调用此函数

现在,我们的视图控制器如下所示:

现在转到我们的mainViewController

在按钮操作事件中添加以下代码

当我们点击changeColorButton时,我们导航到NewViewController 。 如我们所见, NewViewController中的selectedColor变量返回一个 类型Observable,因此我们可以订阅该序列。

这样,可观察对象发出的任何值都可以在我们的MainViewController上捕获。 您可以将其视为简单的KVO。

欢呼!! 我们已经完成了第一个RxSwift驱动的应用程序。

Github上的源代码