Swift Eureka:无法在cellUpdate

时间:2017-08-22 00:17:17

标签: ios swift swift3 eureka-forms

这是我显示和隐藏行的代码。我基本上设置了隐藏属性,如Eureka FAQ中所述。如果这是设置隐藏属性以显示/隐藏行的正确方法,请告诉我。

    form
    +++ Section("main")
    <<< ButtonRow () { (row: ButtonRow) -> Void in
        row.tag = "sampleRow"
        if self.shouldHide {
            print("hide exampleRow")
            row.hidden = true
        } else {
            print("show exampleRow")
            row.hidden = false
        }
    }
    .cellSetup ({ [unowned self] (cell, row) in
        row.title = "Title Example"
        row.cell.tintColor = .red
    })
    .cellUpdate({ [unowned self] (cell, row) in
        if self.shouldHide {
            print("cellUpdate: hide exampleRow \(self.shouldHide)")
            row.hidden = true
        } else {
            print("cellUpdate: show exampleRow \(self.shouldHide)")
            row.hidden = false
        }
    })
    .onCellSelection({ (cell, row) in
        print("It's Me!")
    })

稍后在代码中,我将变量shouldHide更新为true或false并调用tableView.reloadData(),它会调用cellUpdate块但没有任何反应。有人可以帮忙吗?这是我的项目,你可以克隆和重现这个问题。 https://github.com/cuongta/testEurekaHideShow

再次感谢!

1 个答案:

答案 0 :(得分:3)

EurekaForm中隐藏行或甚至某个部分的正确方法是修改.hidden属性并在此之后调用.evaluateHidden()方法,这样为了让代码工作,您需要执行此操作修改后,此任务不需要shouldHide var

用这个替换.onCellSelection回调方法

.onCellSelection({ (cell, row) in
                    print("It's Me!")
                    row.hidden = true
                    row.evaluateHidden()
                })

完整代码

    form +++ Section("main")
        <<< ButtonRow () { (row: ButtonRow) -> Void in
            row.tag = "sampleRow"
            }
            .cellSetup ({ (cell, row) in
                row.title = "Title Example"
                row.cell.tintColor = .red
            })
            .onCellSelection({ (cell, row) in
                print("It's Me!")
                row.hidden = true
                row.evaluateHidden()
            })

更新

如果您想隐藏任何其他上下文中的单元格,您需要按标记获取该单元格,之后您可以修改.hidden并调用.evaluateHidden()方法

@IBAction func btnAction(_ sender: Any) {
    if let buttonRow = self.form.rowBy(tag: "sampleRow") as? ButtonRow
    {
        buttonRow.hidden = true
        buttonRow.evaluateHidden()
    }
}