2016-08-14 2 views
1

여기에 대한 조언을 찾기 위해 관리 할 수없는 질문이 있습니다. (아마도 인터넷에서 검색하는 동안 내 나쁜 영어로 인해 : 나쁜 제목!).NSTableView 콘센트가 코드에서 NSOutlineView로 서브 클래스 화 되었습니까?

다른 창에서 여러 번 사용되는 xib에 NSTableView의 하위 클래스가 있습니다. 그러나이 창들 중 하나에서 tableView를 NSOutlineView로 동작 시키길 원합니다. (또한 추가 한 멋진 기능의 이점도 있습니다.) 간단하게 outlineView의 서브 클래스를 만들고 tableView 서브 클래스의 모든 코드를 복사하는 것을 꺼려합니다. 동일한 코드 (더 쉬운 코드 유지 관리)와 xib도 재사용하고 싶습니다. 어떻게해야합니까?

조쉬

+0

하여 만들어보십시오 클래스가 준수 할 수있는 기본 구현을 통해 기능을 제공하는 클래스입니다. –

+0

카테고리 자체는 스위프트에 존재하지 않습니다. 프로토콜 확장을 의미합니까? 그렇다면 관련 클래스의 저장된 속성을 사용할 수 없습니다. – BaseZen

답변

0

하위 클래스는 추가 저장 속성이 없습니다, 당신은, 초기화를 오버라이드 (override) 할 필요가 대신 서브 클래스의 NSTableView에 확장 절에 메소드를 선언하지 않는 경우 :

extension NSTableView { 
    func forAllSubclassesOfNSTableView() { /* etc. */ } 
} 


let ov = NSOutlineView() 
ov.forAllSubclassesOfNSTableView() // Works 
+0

감사하지만 사실은 내 하위 클래스에도 많은 속성과 이니셜 라이저가 있습니다. 사실 NSTableView 일뿐만 아니라 버튼, 레이블 +이 테이블 뷰 등 여러 객체를 포함하는 NSView입니다. 이 NSView를 창에서 사용할 때 TableView에 "이봐, 이번에는 outlineView처럼 행동하길 바래."라고 말하고 싶다. 그것은 의미가 있습니까? – Joshua

관련 문제