gpt4 book ai didi

ios - Swift Combine (UIKit) 中的双向绑定(bind)

转载 作者:行者123 更新时间:2023-12-04 11:32:43 42 4
gpt4 key购买 nike

我有一个 UITableViewCell包含 UISwitch .此单元格有自己的 SwitchCellViewModel .假设它包含一些 Bool值(启用与禁用)。和ViewController是包含 UITableView 的那个, 创建 viewModel为单元格并用它设置单元格。
我想达到:

  • 在单元级别:每当 viewModel 的 bool 属性值更改时更改 UISwitch 状态(当然无需重新加载 tableView)。
  • 在 ViewController 级别:处理 UISwitch 状态更改(由用户)。

  • 接下来是用例:单元格显示一些可以禁用或启用的选项。该操作转到后端,在我收到结果响应后(在后端启用与禁用),我必须再次将 View 的状态与更新的数据同步。
    我了解如何在单元格级别订阅属性值更改,因此当我从 viewController 在 vi​​ewModel 中更改它时,它会立即更新单元格 View 。但我不确定如何处理来自 UISwitch 的后退操作到 View Controller 。
    是否可以通过单个 @Published 来实现? viewModel 中的 bool 属性,或者对于这种双向情况,我必须有 2 个单独的东西。
    我不得不公开一个单独的 Publisher 对我来说真的很傻。为此,因为我已经有一个 @Published viewmodel 中的属性,应该通知该 View Controller ,所以我为什么不使用它。但是如果我只使用一个,那么 ViewController 会设置 @Published var 在 vi​​ewModel 中,cell 本身会处理它并调整 UI,但 ViewController 也会立即获取有关它的事件,因为它已订阅它。

    最佳答案

    @Published是一种单向数据流 - 它与 ObservableObject 一起,合成一个组合发布者链,当值“将改变”时发送更新(半双工或单向)。它不会发送已更改的值,而只会发送某些已更改的信号。
    要将数据流返回到模型,您需要调用某些东西或从 UISwitch 激活触发该返回数据流。它可以像回调方法一样简单,以更新您保持状态的模型 - 这就是我通常开始的地方。

    关于ios - Swift Combine (UIKit) 中的双向绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65391066/

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