2016-04-01 17 views
2

Dies ist eine Frage im Zusammenhang mit dem Swift-Open-Source-Projekt Eureka und ich poste diese Frage hier auf SO, da sie ihr Tag hier überwachen.Aktivieren/Deaktivieren der Zeile basierend auf dem Wert von MultipleSelectorRow

Ich habe ein Formular erstellt, das eine MultipleSelectorRow und folgende eine TextRow hat. Das TextRow ist standardmäßig deaktiviert. Die MultipleSelectorRow zeigt eine Liste von Optionen.

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'" 
    } 

Was ich will, ist, wenn der Benutzer die letzte Option auswählt, Referral oder andere, mag ich die TextRow aktiviert werden.

Meine aktuelle Implementierung oben tut dies nicht. Es bleibt deaktiviert. Was mache ich hier falsch?

Antwort

2

Per Definition MultipleSelectorRow<T> hält eine Set<T> als Werttyp und scheint, dass Sie fälschlicherweise einen String-Wert erwarten.

auch sagen, dass Sie mit diesem Prädikat anprobieren sollte ...

$0.disabled = "NOT $Lead contains 'Referral or Other'" 

oder alternativ ..

$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 
} 
Verwandte Themen