Swift Eureka SplitRow 值更新

Swift Eureka SplitRow values updating

每次 VC 出现在屏幕上时,我都试图更新我的 SplitRow 中每个 LabelRow 的值(它必须是那样的)。我试过在两个 LabelRows 上使用 .cellUpdate,但它只是崩溃了。当我仅在其中一个 LabelRows 上使用 .updateCell 时,它会很好地更新该行的值。有没有办法同时更新它们?我尝试在 SplitRow 上使用 .updateCell 但后来我无法更新值(它们是只读的?)。 失败的代码部分:

            <<< SplitRow<LabelRow, LabelRow>() {
            [=11=].rowLeftPercentage = 0.5
            [=11=].rowLeft = LabelRow() {
                [=11=].title = "Expected"
                [=11=].tag = "temp_expected"
            } //tried callbacks here

            [=11=].rowRight = LabelRow() {
                [=11=].title = "Last"
                [=11=].tag = "temp_last"
            } //tried callbacks
        } //also tried there but cant update values

编辑:这是我试过的方法

            <<< SplitRow<LabelRow, LabelRow>() {
            [=12=].rowLeftPercentage = 0.5
            [=12=].rowLeft = LabelRow() {
                [=12=].title = "Expected"
                [=12=].tag = "temp_expected"
            }.cellUpdate {
                .value = "value1" //here would go value from other object, doesn't work either
            }
            [=12=].rowRight = LabelRow() {
                [=12=].title = "Last"
                [=12=].tag = "temp_last"
            } .cellUpdate {
                .value = "value2" // same as above
            }
        } 

还有一个

            <<< SplitRow<LabelRow, LabelRow>() {
            [=13=].rowLeftPercentage = 0.5
            [=13=].rowLeft = LabelRow() {
                [=13=].title = "Expected"
                [=13=].tag = "temp_expected"
            }
            [=13=].rowRight = LabelRow() {
                [=13=].title = "Last"
                [=13=].tag = "temp_last"
            }
        }.cellUpdate {
            .value?.left = "value1" //does nothing
            .value?.right = "value2" //does nothing
        }

您的代码因堆栈溢出而崩溃。 .value的setter调用了cell.update(),又调用了cellUpdate,形成了死循环:(

我发现这个肮脏的把戏很管用:

DispatchQueue.main.async 调用中换行 row.value = ... 行:

SplitRow<LabelRow, LabelRow>() {
    [=10=].rowLeftPercentage = 0.5
    [=10=].rowLeft = LabelRow() {
        [=10=].title = "A"
        [=10=].tag = "temp_expected"
    }.cellUpdate { cell, row in
        DispatchQueue.main.async {
            row.value = ...
        }
    }
    [=10=].rowRight = LabelRow() {
        [=10=].title = "B"
        [=10=].tag = "temp_last"
    } .cellUpdate { cell, row in
        DispatchQueue.main.async {
            row.value = ...
        }
    }
}

但实际上,您应该找到另一个地方来设置行的值。听起来值会随着时间而变化,而您希望始终显示最新值。尝试使用 RxSwift 的响应式方法。您将订阅 Observable<String>,并将收到的每个值设置为该行的值。