使用ReactiveCocoa的MVVM,ViewModel如何告诉View做一次操作?

时间:2015-07-11 04:58:25

标签: ios mvvm reactive-cocoa

例如,我希望我的观点能够显示祝酒词,我现在这样做的方式就像:

在视图中:

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

showToast是我的ViewModel的属性,我不认为这种方式非常具有描述性,是否有更标准,更优雅的方式来实现这一目标?

1 个答案:

答案 0 :(得分:1)

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

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

更好的是,你可以让showToast采用一个参数(例如吐司的内容),然后你不需要使用@weakify@strongify,而是可以解除信号直接使用rac_liftSelector

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