【问题标题】:get string value from textfield in nstableview从 nstableview 中的文本字段获取字符串值
【发布时间】:2017-06-03 07:47:44
【问题描述】:

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

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

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

   print("Edit") 
   return true
}

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

我怎样才能得到这个?

swift 3,osx

【问题讨论】:

    标签: macos swift3 xcode8


    【解决方案1】:

    你可以使用:

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

    【讨论】:

    • 感谢这个好的解决方案 :) 但我怎么知道这个值来自哪个文本字段?
    • 我进行了编辑以展示如何使用委托方法的 control 参数。
    猜你喜欢
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    相关资源
    最近更新 更多