swiftmacosfocusnstableviewnstablecellview

focus a field in a NSTableCellView for instant editing


I want to set the focus on one of two editfields in a NSTableCellView in a table with one column in a row programaticly, so that a user can instantly edit the field. In my example I can select the row (after pressing a button), but I cann´t find a way to set the focus on a special field.

I my example I want to set the cursor on the tiltle field in row 3.

class MainVC: NSViewController, NSTableViewDataSource, NSTableViewDelegate
{ var t = [Item]()
  @IBOutlet weak var itemTV: NSTableView!
  @IBAction func actionBu(_ sender: Any)
  { 
    let indexSet = IndexSet(integer: 2)
    itemTV.selectRowIndexes(indexSet, byExtendingSelection: false)
    itemTV.scrollRowToVisible(2)
  }

enter image description here

enter image description here


Solution

  • thanks to all helping commands, I found an solution

    @IBAction func actionBu(_ sender: Any)
      { self.view.window!.makeFirstResponder(itemTV.view(atColumn: 0, row: 2, makeIfNecessary: true)?.subviews[0])
      }
    

    works fine for me,