这是一个与Swift开源项目Eureka有关的问题,由于他们在此处监视其标签,因此我将其发布在SO上。
我创建了一个包含MultipleSelectorRow
的表单,然后创建了一个TextRow
。该TextRow
默认情况下处于禁用状态。 MultipleSelectorRow
显示选项列表。
form
+++ Section()
<<< MultipleSelectorRow<String>("Lead") {
$0.title = "Lead"
$0.options = ["Yahoo", "Yelp", "Google", "Referral or Other"]
}
.onPresent { from, to in
to.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Done, target: from, action: #selector(ViewController.multipleSelectorDone(_:)))
}
<<< TextRow("Referral") {
$0.title = "Note Referral or Other"
$0.disabled = "$Lead != 'Referral or Other'"
}
我想要的是,如果用户选择最后一个选项,“引荐”或“其他”,我希望启用
TextRow
。我上面的当前实现没有做到这一点。它保持禁用状态。我在这里做错了什么?
最佳答案
根据定义,MultipleSelectorRow<T>
将Set<T>
保留为值类型,似乎您错误地期望使用String值。
话虽如此,您应该尝试使用此谓词...
$0.disabled = "NOT $Lead contains 'Referral or Other'"
或者..
$0.hidden = Condition.Function(["Lead"]) { form in
if let r1 : MultipleSelectorRow <String> = form?.rowByTag("tag1") {
return r1.value.contains("Referral or Other") == false
}
return false
}