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

标签 ios mvvm reactive-cocoa

例如,我希望我的 View 显示 toast ,我现在的做法是这样的:

在 View 中:

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

showToast 是我的 ViewModel 的一个属性,我认为这种方式的描述性不强,是否有更标准、更优雅的方式来实现这一点?

最佳答案

为了提供更具描述性的内容,您可以创建一个 RACSubject 以使用 [self.toastsSubject sendNext:@"Toast info string of some kind"] 手动发送通知。

@weakify(self)
[self.viewModel.toastsSubject subscribeNext:^(id _) {
    @strongify(self)
    [self showToast];
}

更好的是,你可以让 showToast 接受一个参数(比如 toast 的内容),然后你就不需要使用 @weakify@strongify,您能否直接使用 rac_liftSelector 提升信号。

[self rac_liftSelector:@selector(showToast:)
      withSignals:self.viewModel.toastsSubject, nil];

关于ios - 带有 ReactiveCocoa 的 MVVM,ViewModel 如何告诉 View 做一些一次性操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31353596/

相关文章:

ios - 连续摇晃 X 秒

ios - NSCFCalendar dateFromComponents : components cannot be nil

c# - 从 LINQ 查询结果填充 Observable 集合

linux - 如何使用网络服务从 VLC (linux) 流式传输到 iPod(完整过程)?

c# - 如何使用 Viewmodel-first 从代码隐藏设置 viewmodel 属性?

c# - 数据绑定(bind)到不同 UserControl 中的 ObservableCollection - 如何保留当前选择?

ios - 使用 RAC 滑动单元格

ios - ReactiveCocoa : subscribe only to new values

ios - 如何使用 Reactive Cocoa 以正确的方式链接信号?

ios - 制作具有固定值的变量