macOS Swift TextField.stringValue 在我单击其他内容之前不会返回更新的值

macOS Swift TextField.stringValue not returning updated value until I click on something else

如果之前有人问过这个问题,我深表歉意,但我在过去几个小时内无法在网上找到我要找的东西。我仍然是 swift.

的菜鸟

我试图在单击 NSButton 时存储 TextField 的字符串值。如果我点击任意位置,然后点击 NSButton,代码运行完美,但如果我不点击,stringValue 仍然报告之前的值。

@IBOutlet weak var NameText: NSTextField!
@IBOutlet weak var SaveChangesAccountButton: NSButton!

var selectedAccountItemNumber = NSInteger()

@IBAction func SaveAccountChanges(_ sender: Any)
{
    let AccountName = NameText.stringValue

    AccountingData.instance.book.account[selectedAccountItemNumber].name = AccountName
}

您必须在文本字段上调用 ​​validateEditing()

并且请遵守变量和函数名以小写字母开头的命名规则,不要在Swift中使用NSInteger

@IBOutlet weak var nameText: NSTextField!
@IBOutlet weak var saveChangesAccountButton: NSButton!

var selectedAccountItemNumber = 0

@IBAction func saveAccountChanges(_ sender: Any)
{
    nameText.validateEditing()
    let accountName = nameText.stringValue
    AccountingData.instance.book.account[selectedAccountItemNumber].name = accountName
}