例如,我希望我的 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/