菜鸟教程小白 发表于 2022-12-13 09:00:34

ios - MVVM 与 ReactiveCocoa,ViewModel 如何告诉 View 做一些一次性操作?


                                            <p><p>例如,我希望我的 View 显示 toast ,我现在这样做的方式是:</p>

<p>在 View 中:</p>

<pre><code>RACObserve(self.viewModel, showToast) subscribeNext:^(NSNumber *isShow) {
    if (isShow.boolValue) {
      self showToast];
    }
}
</code></pre>

<p><code>showToast</code> 是我的 ViewModel 的一个属性,我觉得这种方式不是很具描述性,有没有更标准、更优雅的方式来实现呢?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>为了提供更具描述性的内容,您可以创建一个 RACSubject 以使用 <code></code> 手动发送通知。</p>

<pre><code>@weakify(self)
[self.viewModel.toastsSubject subscribeNext:^(id _) {
    @strongify(self)
    ;
}
</code></pre>

<p>更好的是,你可以让 showToast 接受一个参数(例如 toast 的内容),然后你就不需要使用 <code>@weakify</code> 和 <code>@strongify</code>,而不是你可以直接使用 <code>rac_liftSelector</code> 解除信号。</p>

<pre><code>[self rac_liftSelector:@selector(showToast:)
      withSignals:self.viewModel.toastsSubject, nil];
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - MVVM 与 ReactiveCocoa,ViewModel 如何告诉 View 做一些一次性操作?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/31353596/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/31353596/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - MVVM 与 ReactiveCocoa,ViewModel 如何告诉 View 做一些一次性操作?