Ich habe seit ein paar Tagen damit zu kämpfen. Ich habe eine Liste von ImageCheckRow-Typen und möchte sie als aktiviert oder nicht markiert markieren und sie dann deaktivieren, damit der Benutzer sie nicht ändern kann. Ich habe den folgenden Code ausführen:So deaktivieren Sie eine ImageCheckRow
let multi = subvalue.extractBool("multi", ifnil: false)
let disableEntry = subvalue.extractBool("disabled", ifnil: false)
let title: String! = subvalue.extractString("title", ifnil: "Select")
let defaultValues = subvalue.extractNSDictionary("values");
let imageChecked: String!
let imageUnchecked: String!
if (multi)! {
currentSection = SelectableSection<ImageCheckRow<String>>(title, selectionType: .multipleSelection)
imageChecked = "images/checkbox-checked"
imageUnchecked = "images/checkbox-unchecked"
} else {
currentSection = SelectableSection<ImageCheckRow<String>>(title, selectionType: .singleSelection(enableDeselection: true))
// We should change these to radios at some point
imageChecked = "images/radio-checked"
imageUnchecked = "images/radio-unchecked"
}
form +++ currentSection!
if let options = subvalue.extractArray("options") {
for option in options {
for (optionKey, optionValue) in option as! NSDictionary {
currentSection! <<< ImageCheckRow<String> { row in
row.tag = "\(tagname)_\(optionKey)"
row.title = optionValue as? String
row.selectableValue = optionKey as? String
if let dvkey = optionKey as? String {
if let _ = defaultValues?.value(forKey: dvkey) {
row.value = optionKey as? String
}
}
row.disabled = Condition(booleanLiteral: disableEntry!)
row.evaluateDisabled()
}.cellSetup { cell, _ in
cell.trueImage = UIImage(named: imageChecked)!
cell.falseImage = UIImage(named: imageUnchecked)!
}
}
}
}
Wenn ‚disableEntry‘ gilt die ImageCheckRow ist immer noch gültig für das Klicken und ändert sich das Bild von zu unkontrolliert und umgekehrt überprüft. Wie sollte ich diese Zeilen deaktivieren?
gelöst. Ihr Code sieht für mich richtig aus, können Sie überprüfen, ob der 'disableEntry' in einigen Fällen 'wahr' wird? Vielleicht können Sie 'true' als Standardwert verwenden, um zu sehen, ob sich etwas ändert. – RemeR