NSTableView
의 배수는 NSCell
입니다 (간접적으로는 NSTableColumn
경유). NSCell은 Flyweight 디자인 패턴을 따릅니다. 그들은 쿠키 커터입니다. 한 열에 하나의 셀이 있으며 각 행마다 그려야합니다. "값은 첫 번째 행에 그립니다. 여기 두 번째 행의 값 등이 있습니다." 이는 셀당 뷰 인스턴스가있는 뷰 기반 테이블 뷰와는 대조적입니다.setObjectValue : nil 만 호출하면 NSPopUpButtonCell이 올바르게 표시되는 이유는 무엇입니까?
NSPopUpButtonCell을 서브 클래스로 만들었으며 각각 setXxxValue:
메서드에 대해 NSLog();
을 호출하고 메시지를 수퍼 클래스에 전달합니다. 새로운 행을 추가하거나 테이블을 새로 고칠 때 호출되는 유일한 메소드는 setObjectValue:
입니다. 이것은 documentation에서 기대됩니다 ... 그러나 null
은 그것에 전달 된 유일한 것입니다 !! 선택한 항목 인덱스가있는 NSNumber가 전달되어야합니다.
내 테이블이 좋습니다. 셀의 동작을 확장/변경하고 싶기 때문에 이것을 이해하려고 노력하고 있습니다 (분명히 그렇지 않은 경우 서브 클래스가 필요함).
질문 : 어떻게 가능합니까? 각 행에 대해 올바른 값을 그리려면 NSPopUpButtonCell을 값으로 설정하는 방법 바인딩을 고려해도, NSTableColumn은 무거운 짐을지고 있습니다. 내가 뭘 놓치고 있니?
여기에 있습니다 : 메뉴 항목을 수정해야하는'NSPopUpButtonCell' 하위 클래스 인'setObjectValue :'는 모든 호출이 nil로만 이루어집니다.이 문제점에 대한 더 깊은 통찰력이 있으십니까? – Jay