macOS Swift TextField.stringValue не возвращает обновленное значение, пока я не нажму на другое - PullRequest
0 голосов
/ 02 марта 2020

Я прошу прощения, если об этом спрашивали раньше, но я не смог найти то, что искал в Интернете за последние несколько часов. Я все еще функционирую нуб с swift.

Я пытаюсь сохранить stringValue TextField, когда я нажимаю NSButton. Если я щелкаю в любом месте, а затем нажимаю на 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
}

1 Ответ

2 голосов
/ 02 марта 2020

Вы должны вызвать validateEditing() в текстовом поле.

И, пожалуйста, соблюдайте соглашение об именах, согласно которому имена переменных и функций начинаются со строчной буквы и не используют NSInteger в Swift.

@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
}
...