2016-10-26 17 views
5

Tôi có một chính NSTabViewController với vài tab:Cocoa đại biểu 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 ? 
    } 

} 

Tôi muốn kiểm tra trong mỗi NSViewController nếu biến hasChangestrue sau đó bật lên thông điệp:

"Bạn phải thay đổi chưa lưu Bạn có muốn thay đổi tab không? "

Nếu tôi kiểm tra điều này trong MainTabViewController tôi nhận được <NSTabView: 0x101e17a10> và phải làm gì với nó, tôi không biết.

Nếu tôi cố gắng sử dụng NSTabViewDelegate trong số MyViewController thì tôi không biết cách ủy quyền MainTabViewController trong đó. Nơi đính kèm nó?

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

Tôi đã thêm một chút nữa vào câu trả lời của mình er. Để làm rõ nó –

Trả lời

1

0x101e17a10 là địa chỉ của NSTabView dụ được trỏ đến bởi đối tượng TabView. Bạn cần phải in các số nhận dạng tabView trong phương thức didSelect của mình.

Bạn cần phải thiết lập các định danh trong Interface Builder:

enter image description here

Và sau đó (ví dụ):

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

Output khi tabbing:

enter image description here

+0

tôi quên thêm đại biểu :) – Arti

+0

oh okay. tốt. Tôi vui vì bạn đã làm nó hoạt động :) –

Các vấn đề liên quan