2017-02-20 5 views
4

터치 바를 사용하여 앱을 개발하고 싶습니다. 나는 인터넷에서 수색을하고 튜토리얼을 보았다. 그들은 모두 윈도우 콘트롤러로 데모를 만들고 makeTouchBar()을 오버라이드하거나 스토리 보드에 터치 바를 드래그하면 터치 바가 생깁니다. 하지만 나는 touchcontroller에서 터치바를 다르게하고 싶습니다. 그런 다음 스토리 보드의 터치 콘트롤러에 터치바를 끌어다 놓고 터치 콘트롤러에 터치 바를 묶습니다.viewcontroller에서 터치 바를 표시하는 방법

bind(#keyPath(touchBar), to: self, withKeyPath: #keyPath(touchBar), options: nil)

enter image description here

하지만 내 touchbar을 찾을 수없는 프로젝트를 실행 한 다음 내가 touchbar.isVisible를 인쇄하고 나는 값이 false 것을 발견했을 때.

image description here

그래서 방법의 ViewController에서 touchbar를 표시합니다. 감사! 당신은의 ViewController이 시도 할 수

답변

2

, 그것은 나를 위해 작동 :

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

는 사실 Loys '대답은 권리입니다.

시스템 진행하여

NSTouchBar 검색리스트의 아래에서 위로부터 도시 된 바와 같이

  1. 애플 대리자
  2. 애플리케이션 객체
  3. 메인 화면의 컨트롤러
  4. 메인 화면의 대리자
  5. 메인 윈도우
  6. 메인 윈도우의 첫 번째 응답자
  7. 키 윈도우의 컨트롤러
  8. 키 윈도우의 대표는 windowcontroller 또는 앱 위임에 찾으려고 의미
  9. 키 창의 첫 번째로 반응

  • 키 창.

    그러나 이것을 덮어 쓰면 viwController에이 코드를 넣어 창의 touchBar를 바인딩 해제하고 뷰에 바인딩 할 수 있습니다. 이 예에서, 제어기를 볼 nstouchbar 바인딩> -는

    NSTouchBar Documentation

    WWDC Sample Code :

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

    은 참조.