iOS 中 MVVM 和 Rac 中如何刷新列表单独某一行?

发布于 2022-09-06 12:41:42 字数 1140 浏览 9 评论 0

一个 TableView,上面 10条数据,我想删除某一行,然后刷新这一行,在 MVVM 下我有几个问题想请教下大家:

1.刷新列表这个动作,是不是该在控制器里做?
2.更新数据,就是上面删除点击的那一行数据,相关逻辑是不是该在 ViewModel 里面做?
3.TableView 的数据源是不是一般定义在 ViewModel 里面?

如果 1 2 3 都是的话,我在 ViewModel 里面处理完删除数据的逻辑,更新好数据源后,如果我想单独刷新某一行,该怎么通知控制器刷新 TableView 呢?

如果只是简单的调用 reloadData 刷新全部列表,我可以监听 ViewModel 的数据源:

- (void)viewDidLoad {
    [super viewDidLoad];
    
    @weakify(self);
    
    //按钮 enabled 属性绑定
    RAC(self.btnDismiss,enabled) = self.viewModel.validDismissSignal;
    
    [[[RACObserve(self.viewModel, authorizations) distinctUntilChanged] skip:1] subscribeNext:^(NSArray <RRAuthorization *> *authorizations) {
        @strongify(self);
        [self.tvAuthorization reloadData];
        NSLog(@"监听到了数据源有改变 %@",authorizations);
        
    }];
    
    [self.tvAuthorization registerNib:[UINib nibWithNibName:RRAuthorizationCellIdentifier bundle:nil] forCellReuseIdentifier:RRAuthorizationCellIdentifier];
    
}

希望对 MVVM RAC 比较了解的朋友能够指教下....

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

各自安好 2022-09-13 12:41:42

同问
如果cell内部某个控件点击了需要刷新这个cell的高度(非autolayout),如何做?
cell <-> cellViewModel
viewControllrViewModel <-> viewController

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文