我尝试使用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.first
和form.last
代替使用标签,但是不建议使用。