swift - 如何设置 NSTabViewItem 的标识符?

标签 swift xcode macos cocoa nstabview

我想知道 NSTabView 何时切换到特定 View 。为此,我用我的自定义类扩展了 NSTabViewController 以便能够充当委托(delegate):

class OptionsTabViewController: NSTabViewController {
    override func tabView(_ tabView: NSTabView, didSelect tabViewItem: NSTabViewItem?) {
        print(tabViewItem!.identifier)
    }
}

这打印了看起来像指针内存位置的内容:

Optional(0x608000100e10)
Optional(0x6080000c36b0)

我想应该可以在界面生成器中的某处设置这些标识符,但我已经尝试在标记为 identifier 的不同文本字段中编写内容,并且仍然在控制台中获取这些内存位置值。

我还使用了 print(tabViewItem!.label) 但它会在选项卡按钮中打印标签。

那么如何设置该标识符以识别选项卡 View 组件中哪个 View 处于事件状态?

最佳答案

首先,您可以这样定义您的标识符:

enter image description here

然后在您的代码中您可以定义一个 enum 来检查哪个是当前选定的选项卡,执行如下操作:

enum YourTabs:String {
   case tab1
   case tab2
   case none
}

class ViewController: NSViewController, NSTabViewDelegate {
    @IBOutlet var tabView:NSTabView!

    public func tabView(_ tabView: NSTabView, didSelect tabViewItem: NSTabViewItem?) {
        if let identifier = tabViewItem?.identifier as? String,
            let currentTab = YourTabs(rawValue: identifier) {
            switch currentTab {
            case .tab1:
                print("do something with tab1")
                break
            case .tab2:
                print("do something with tab2")
                break
            default:
                break
            }
        }
    }
}

关于swift - 如何设置 NSTabViewItem 的标识符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48374804/

相关文章:

xcode - 有什么方法可以阻止 Xcode 生成这样的文件夹吗?

macos - Mac OSX的构建问题

swift - 如何使用带有 swift 3 的 iOS 图表完成删除条形图上的绘制值

swift - Xcode:在 Xcode 14 中使用包

swift 可编码 : decode dictionary with unknown keys

xcode - 如何将字符串转换为具有无关字符的 NSDate (swift)?

macos - Go: "stat hello.go: no such file or directory"

android - Mac 操作系统 : Android Studio quit unexpectedly on first time startup

ios - 我怎样才能在另一个类(class)访问 IBOutlet? swift

ios - 如何将现有对象添加到 Parse.com Databrowser 中的关系中