gpt4 book ai didi

swift - cocoa 代理 nstabviewcontroller

转载 作者:搜寻专家 更新时间:2023-10-31 08:06:15 25 4
gpt4 key购买 nike

我有一个主 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 ?
}

}

我想每 NSViewController 签到一次如果变量 hasChangestrue然后弹出信息:

"You have unsaved changes. Do you want to change tab ?"

如果我在 MainTabViewController 中检查这个我得到<NSTabView: 0x101e17a10>我不知道该怎么办。

如果我尝试使用 NSTabViewDelegate在我的 MyViewController然后我不知道如何委托(delegate) MainTabViewController在里面。在哪里附加它?

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

最佳答案

0x101e17a10是tabView对象指向的NSTabView实例的地址。您需要在 didSelect 方法中打印 tabView identifiers

您需要在 Interface Builder 中设置标识符:

enter image description here

然后(例如):

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

Tab 时的输出:

enter image description here

关于swift - cocoa 代理 nstabviewcontroller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40270775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com