如何计算数学类型并在输入 swift 时给出结果

How to calculate a math type and give the result as you type in swift

我正在为我的大学制作一个将数字从十进制转换为二进制的程序。 我已经用 Xcode 在 Swift 中编写了脚本和函数,并且效果很好。但现在它可以与计算按钮一起使用。 当用户在 NSTextField 上输入数字时,我想删除按钮代码和 return 特定标签上的结果。

如何做到这一点? 它适用于 OSX 环境的应用程序。

我在带有转换按钮的视图文件上有以下代码,我想删除它。

import Cocoa

class DecimalView: NSViewController {

    @IBOutlet weak var decimalNumberText: NSTextField!

    @IBOutlet weak var toBinaryLabel: NSTextField!

    @IBAction func convertButton(sender: AnyObject) {

        let binaryNumber = DecimalToBinary(Int(decimalNumberText.stringValue)!)
        toBinaryLabel.stringValue = binaryNumber

    }

    override func viewDidLoad() {

        super.viewDidLoad()



        // Do view setup here.
    }

}

应该怎么改造?

我假设您使用的是 NSTextField。为此,您必须使用 及其方法 textDidChange:。在此方法中,只需调用您的函数并将值设置为标签。

参考自:NSTextField value changed

如果您使用 NSTextField 作为输入,则将其委托设置为自身并使用 NSTextFieldDelegatecontrolTextDidChange 委托。

在此委托中,您可以调用转换脚本和函数并将结果显示在您的特定标签上。

import Cocoa

class DecimalView: NSViewController, NSTextFieldDelegate {

@IBOutlet weak var decimalNumberText: NSTextField!

@IBOutlet weak var toBinaryLabel: NSTextField!

func convertNumber() {
    let binaryNumber = DecimalToBinary(Int(decimalNumberText.stringValue)!)
    toBinaryLabel.stringValue = binaryNumber
}

override func viewDidLoad() {

    super.viewDidLoad()
    // Do view setup here.

    decimalNumberText.delegate = self
}

override func controlTextDidChange(obj: NSNotification) {
    // Call your conversion functions here and display the result on label
    if obj.object as! NSTextField == decimalNumberText {
        self.convertNumber()
    }
}

}