2016-10-26 22 views
5

Mam główny NSTabViewController z kilku zakładek:Cocoa delegat nstabviewcontroller

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 ? 
    } 

} 

Chcę sprawdzić w każdym NSViewController jeśli zmienna hasChanges jest true następnie pojawi się komunikat:

„Masz niezapisane zmiany Czy chcesz zmienić kartę? "

Jeśli to sprawdzę w MainTabViewController otrzymam <NSTabView: 0x101e17a10> i co z tym zrobić, nie wiem.

Jeśli spróbuję użyć NSTabViewDelegate w moim MyViewController, to nie wiem, jak przekazać w nim MainTabViewController. Gdzie go dołączyć?

class MyViewController: HIDNSViewController { 
    func tabView(_ tabView: NSTabView, didSelect tabViewItem: NSTabViewItem?) { 
     //Never called 
    } 
} 
+0

Dodałem trochę więcej do odpowiedzi er. Aby to wyjaśnić, –

Odpowiedz

1

0x101e17a10 jest adres instancji NSTabView wskazywanego przez obiekt TabView. Musisz wydrukować tabView identyfikatorów w ramach metody didSelect.

Musisz ustawić identyfikatory w Builder Interfejs:

enter image description here

a następnie (na przykład):

override func tabView(_ tabView: NSTabView, didSelect tabViewItem: NSTabViewItem?) { 
    if tabView.selectedTabViewItem?.identifier! as! String == "1" { 
     print("FIRST VC") 
    } else { 
     print("SECOND VC") 
    } 
} 

Output kiedy tabbing:

enter image description here

+0

zapomniałem dodać delegata :) – Arti

+0

o ok. dobrze. cieszę się, że to działa :) –