【发布时间】:2017-06-01 11:36:54
【问题描述】:
所以我创建了一个自定义行,它只是一个简单的UITextView 行现在我想创建一个规则,如果UITextView 的字符数少于100 个,则变量row.isValid 将评估为@987654324 @。
<<< TextViewRow("About Me") {
let cell = $0.baseCell as! TextViewCell
cell.textView.text = currentUser.aboutMe
$0.disabled = Condition.function([]) {
form in
print("in disabled")
let section = form.sectionBy(tag: "About Me")
let view = section!.header?.viewForSection(section!, type: .header) as! TitleHeaderView
if view.isLocked {
return true
} else {
return false
}
}
$0.cellUpdate({ (cell, row) in
if row.isDisabled {
cell.textView.isUserInteractionEnabled = false
cell.textView.textColor = UIColor.gray
} else {
cell.textView.isUserInteractionEnabled = true
cell.textView.textColor = UIColor.black
}
})
let ruleRequiredViaClosure = RuleClosure<String> { rowValue in
guard let rowValue = rowValue else {
return(ValidationError(msg : "Please write more!"))
}
let numberOfCharacters = rowValue.characters.count
return (numberOfCharacters < 250 ? ValidationError(msg: "Please write more!") : nil)
}
$0.add(rule: ruleRequiredViaClosure)
$0.validationOptions = .validatesOnDemand
}
使用普通的TextRow,这将编译并且 XCode 不会抛出任何错误,尽管由于 TextViewRow 是自定义行,我相信这就是它抛出错误的原因。
它给我的错误是我需要使用:
$0.add(ruleSet: ...)
但我找不到任何文档。
我也不确定我是否能够像我一样定义我的规则,因为闭包中的rowValue 可能没有引用任何东西。我该如何解决这个问题?
【问题讨论】:
标签: swift eureka-forms