您可以使用:
func control(_ control: NSControl, textShouldEndEditing fieldEditor: NSText) -> Bool {
print("new text is \(fieldEditor.string!)
return true
}
你會發現在該委託方法的fieldEditor
參數的新文本。
現在你在你的NSTableView類中有這個委託方法。我建議將它移動到您的自定義單元類並重置您的委託以指向自定義單元格。
然後,如果您將四個文本字段中的每個文本字段分配到@IBOutlet
屬性,則可以很容易地看到它屬於哪個字段。那就是:
class MyCustomTableViewCell : NSTableViewCell, NSControlTextEditingDelegate {
@IBOutlet weak var nameField : NSTextField!
@IBOutlet weak var categoryField : NSTextField!
@IBOutlet weak var anotherTextField : NSTextField!
@IBOutlet weak var andYetAnotherTextField : NSTextField!
func control(_ control: NSControl, textShouldEndEditing fieldEditor: NSText) -> Bool {
if control == self.nameField {
print("new nameField text is is \(fieldEditor.string!)
}
if control == self.categoryField {
print("new categoryField text is is \(fieldEditor.string!)
}
if control == self.anotherTextField {
print("new anotherTextField text is is \(fieldEditor.string!)
}
if control == self.andYetAnotherTextField {
print("new andYetAnotherTextField text is is \(fieldEditor.string!)
}
return true
}
我認爲這也將有switch
聲明(例如switch(control)
和case self.nameField
)工作。
感謝這個很好的解決方案:)但我怎麼知道這個值是哪個文本字段? – Ghost108
我編輯過,顯示如何使用委託方法的'control'參數。 –
非常感謝你:) – Ghost108