如何使用 Eureka 框架根据所选值隐藏行/部分

How to hide a row / section based on selected value with Eureka framework

我尝试使用 Eureka framework 创建调查表。但是,如何在选择特定选项后隐藏部分?

请帮忙!

let fruits = ["Apple", "Banana", "Coconut"]

form +++= SelectableSection<ImageCheckRow<String>, String>() { section in
    section.header = HeaderFooterView(title: "What is your favorite fruit ?")
}

for fruit in fruits {
    form.last! <<< ImageCheckRow<String>(fruit) { lrow in
        lrow.title = fruit
        lrow.selectableValue = fruit
    }
}

form +++ Section("xxxxxx Question") {
    //hide this section when apple is selected
    //[=10=].hidden =
}

form.last! <<< TextAreaRow() {
    [=10=].title = "Enter description here..."
}

首先为您的水果部分设置标签,例如 "fruits_section"。然后你可以像这样设置隐藏变量:

[=10=].hidden = Condition.Function([]) 
            { form in
                if let section = form.sectionByTag("fruits_section") as? SelectableSection<ImageCheckRow<String>, String> {
                    if section.selectedRow()?.title == "Apple" {
                        return true
                    }
                }
                return false
            }

要在第一部分中选择一行时强制评估此隐藏条件,您可以使用第一部分的 onSelectSelectableRow

(section as! SelectableSection<ImageCheckRow<String>, String>).onSelectSelectableRow = { [weak self] _ in
     self?.form.sectionByTag("last_section_tag")?.evaluateHidden()
}

不要忘记为两个部分设置正确的标签。

如果您只有两个部分,您可以使用 form.firstform.last 而不是标签,但不推荐这样做。