2017-05-20 2 views
0

Je veux mettre l'accent sur l'un des deux editfields dans un NSTableCellView dans une table avec une colonne dans une rangée programaticly, de sorte qu'un utilisateur peut instantanément modifier le champ. Dans mon exemple, je peux sélectionner la ligne (après avoir appuyé sur un bouton), mais je ne peux pas trouver un moyen de mettre l'accent sur un champ spécial.concentrer un champ dans un NSTableCellView pour l'édition instantanée

Je mon exemple, je veux mettre le curseur sur le champ tiltle dans la ligne 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

+0

Qu'en est-il de 'NSTableView's' editColumn (_: row: avec: select:) '? – Willeke

+0

'UITextfield' a une méthode' becomeFirstResponder' – user1046037

+1

@ user1046037 Balises osx et NSTableView indiquent une question macOS et Apple dit au sujet de 'becomeFirstResponder': "Ne jamais invoquer directement cette méthode". – Willeke

Répondre

0

grâce à toutes les commandes aidant, je trouve une solution

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

fonctionne bien pour moi,