gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:14:14 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com