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]