gpt4 book ai didi

swift - os x nstextfield 验证

转载 作者:搜寻专家 更新时间:2023-11-01 06:04:53 24 4
gpt4 key购买 nike

我的 NSViewController 中有一个变量:

dynamic var roll_rate:Double = 0.0

我将其附加到我的 NSTextField:

enter image description here

模型键路径显示错误,但它正在工作:当我更改字段中的值时,变量也更改了。但是什么意思:立即验证 以及如何显示和检查字段的验证错误。

我试过实现方法 validateRoll_rate,但是当值改变时它没有调用。

最佳答案

通用解决方案(使用或不使用绑定(bind)) 处理此问题的一种方法是基于响应 here

基本上,您使用NSTextFieldcontrolTextDidChange(notification:) 委托(delegate)方法,并在其中实现您的验证代码。

 override func controlTextDidChange (notification: NSNotification) {
guard let textField = notification.object as? NSTextField else { return }

// test here, replace the dummy test below with something useful
if textField.stringValue != "expected value" {
myTextFieldOutlet.backgroundColor = NSColor.red
myErrorLabelOutlet.stringValue = "Error !!!"
} else {
// everything OK, reset the background color and error label to the normal state
....
}
}

显然 myTextFieldOutlet 是一个链接到您的文本字段的导出,而 myErrorLabelOutlet 是一个导出到一个方便放置的标签,用于显示错误(如果不显示错误则为空白)

面向绑定(bind)的解决方案 确保在 Interface Builder 中选择 Validates immediately 并在进行绑定(bind)的类中实现以下方法(Tuning View Controller 在你的例子中)

override func validateValue(_ ioValue: AutoreleasingUnsafeMutablePointer<AnyObject?>, forKey inKey: String) throws {
// test here, replace the dummy test below with something useful
if roll_rate > 10.0 {
throw NSError(domain: "your-domain", code: 100, userInfo: [NSLocalizedDescriptionKey: "Error, roll rate too high"])
}
}

当错误被抛出时,用户将看到标准表,通知错误和取消更改或更正它的选项。

如果在 Interface Builder 中选择了 Continuously updates value,则在文本字段中的每次击键都会调用上面的方法,否则只有在按下 Enter 或失去焦点后才会调用。

注意:要全面了解如何通过绑定(bind)更新值,包括立即验证 的作用,请参阅文档 here .

关于swift - os x nstextfield 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40219297/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com