J'ai un principal NSTabViewController
avec quelques onglets:
class MainTabViewController: NSTabViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.
}
override func tabView(_ tabView: NSTabView, didSelect tabViewItem: NSTabViewItem?) {
print(tabView)// returns <NSTabView: 0x101e17a10> but what to do with it ?
}
}
Je veux vérifier chaque NSViewController
si variable hasChanges
est true
puis pop-up message:
"Vous avez des modifications non enregistrées. Voulez-vous changer d'onglet?"
Si je vérifie ceci dans MainTabViewController
Je reçois <NSTabView: 0x101e17a10>
et que faire avec cela, je ne sais pas.
Si j'essaye d'utiliser NSTabViewDelegate
dans mon MyViewController
alors je ne sais pas comment déléguer MainTabViewController
en elle. Où l'attacher?
class MyViewController: HIDNSViewController {
func tabView(_ tabView: NSTabView, didSelect tabViewItem: NSTabViewItem?) {
//Never called
}
}
Réponses:
1 pour la réponse № 10x101e17a10
est l'adresse du NSTabView
instance pointée par l'objet tabView. Vous devez imprimer l'onglet identifiants dans votre méthode didSelect.
Vous devez définir les identificateurs dans Interface Builder:
Et puis (par exemple):
override func tabView(_ tabView: NSTabView, didSelect tabViewItem: NSTabViewItem?) {
if tabView.selectedTabViewItem?.identifier! as! String == "1" {
print("FIRST VC")
} else {
print("SECOND VC")
}
}
Sortie lors de la tabulation: