我想开发一款带触控条的应用。我在互联网上搜索并看到了一些教程。他们都使用windowcontroller进行演示,只需覆盖makeTouchBar()
或在storyboard中拖动触摸栏,然后有一个触摸栏。但是我想在viewcontroller中使touchbar变得不同。然后我将一个触摸条拖入故事板中的viewcontroller并在viewcontroller中绑定触摸条。
bind(#keyPath(touchBar), to: self, withKeyPath: #keyPath(touchBar), options: nil)
但是当我运行项目时,我找不到触摸栏,然后打印touchbar.isVisible,我发现该值为false。
那么如何在viewcontroller中显示触摸栏。谢谢!
答案 0 :(得分:5)
你可以在ViewController中试试这个,它对我有用:
override func viewDidAppear() {
super.viewDidAppear()
self.view.window?.unbind(#keyPath(touchBar)) // unbind first
self.view.window?.bind(#keyPath(touchBar), to: self, withKeyPath: #keyPath(touchBar), options: nil)
}
答案 1 :(得分:2)
实际上Loys的答案是对的。
系统的NSTouchBar发现如下表所示从下到上显示:
这意味着它会尝试在windowcontroller或app delegate中找到它。
但你可以覆盖它,将这些代码放在viwController中解开窗口的touchBar并将其绑定到视图。
deinit {
self.view.window?.unbind(#keyPath(touchBar))
}
override func viewDidAppear() {
super.viewDidAppear()
if #available(OSX 10.12.1, *) {
self.view.window?.unbind(#keyPath(touchBar)) // unbind first
self.view.window?.bind(#keyPath(touchBar), to: self, withKeyPath: #keyPath(touchBar), options: nil)
}
}
参考:
WWDC Sample Code - >在此示例中,它将nstouchbar绑定到视图控制器。