带有ReactiveCocoa的MVVM,ViewModel如何告诉View进行一次一次性操作?

卡梅洛斯

例如,我希望我的视图显示一个吐司,我现在的操作方式是:

鉴于:

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

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

查尔斯·玛丽亚(Charles Maria)

为了提供更多描述性的信息,您可以创建一个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];

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章