我尝试使用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
    //$0.hidden =
}

form.last! <<< TextAreaRow() {
    $0.title = "Enter description here..."
}

最佳答案

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

$0.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代替使用标签,但是不建议使用。

10-01 07:45