从nstableview中的textfield获取字符串值

时间:2017-06-03 07:47:44

标签: macos swift3 xcode8

我有一个自定义单元格的nstableview。 (4行,每行一个文本字段)

我有一个nstableview控制器和一个自定义单元类 进入nstableview类我推出了这个委托方法:

func control(_ control: NSControl, textShouldEndEditing fieldEditor: NSText) -> Bool {

   print("Edit") 
   return true
}

当我在我的nstableview中更改nstextfield值时,我得到一个“编辑”打印。但现在我必须知道,编辑的文本字段的新值是什么。

我怎么能得到这个?

swift 3,osx

1 个答案:

答案 0 :(得分:0)

您可以使用:

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)。