2017-09-25 1 views
0

NSTableView에 선택 항목을 유지하는 데 문제가 있습니다. xCode 8.3.3을 Swift 3.1과 함께 사용하고 MacOS 용으로 구축하고 있습니다."복합 값으로 내용 처리"를 사용하여 TableView 선택을 유지하는 방법

셀 기반 tableView는 IB로 생성되며 테이블의 첫 번째 열에는 NSButtonCell (확인란)이 있습니다. 이 열은 ModifiersController.arrangedObjects.enabled에 바인딩됩니다. 체크 박스는 올바르게 체크되고 체크되지 않는 것을 의미하는 예상대로 기능합니다.

문제는 확인란을 클릭하여 상태를 변경하면 선택한 행이 선택 취소되고 첫 번째 행이 선택된다는 것입니다. 체크 박스를 변경할 때 어떤 행이 선택 되더라도 항상 선택되는 첫 번째 행입니다.

내가 예상 한 것은 상자를 선택/선택 해제해도 선택한 행 (강조 표시)에 영향을주지 않아야한다는 것입니다.

enter image description here

은 ArrayController는 'ModifiersController'이라는, 그 Content ArrayMinimizeModifiers라는 User Defaults Controller 키에 바인딩됩니다. MinimizeModifiers은 사용자 정의 Value Transformer의 값 사전입니다. 이런 내가 설정 한 때문에 에 대한 확인란을 복합 값으로 내용 처리

arraycontroller_bindings

오프 (장애인), 테이블의 선택이 적절하게 유지되는 복합 값으로 내용 처리

, 기본 코드 (UserDefaults에 대한 바인딩)가 작동하지 않습니다.

이 복합 값으로 내용 처리에 이며, 사용자 인터페이스 엘리먼트 값이 제대로이 현재 선택를 잃는 테이블을 유발하는 것으로 보일 것입니다 그러나 UserDefaults에 바인딩됩니다.

질문 : 복합 값으로 내용을 처리 할 때 테이블 행 선택을 유지 관리하는 방법은 무엇입니까?

부록

있는 tableView가 selectionIndexes에 바인딩 및 어레이 컨트롤러가 preserve selection로 설정 (나는 또한 오프 preserve selection으로 시도하고와 모두 오프 '빈 선택하지 마십시오'- 성공없이)를. 내가 엑스 코드에 코드를 업데이트 한

arraycontroller_preserve

그리고 미니 영화 (허용 된 경우) 문제를 보여주는에 대한 링크

selectionIndexes_bind

... https://www.rgbworld.com/images/stackoverflow/selection.m4v

Addendum2 9와 4 번 스위프트는 문제가 지속됩니다.이 문제는 내 KVO 사용 및/또는 보조 변수 사용과 관련이있을 수 있습니다. @objc dynamic var

누군가가 도움을 줄 수 있도록 Github 저장소를 만들었습니다. 나는이 문제를 해결할 수있는 개발자를위한 현상금을 추가 할 것이다.

Githib 리포

https://github.com/rgbworld/CompoundTransformer https://github.com/rgbworld/CompoundTransformer

+0

당신이 배열 컨트롤러에 테이블 뷰의 '선택 인덱스'를 결합 했습니까? 'Preserve Selection'이 켜져 있습니까? – Willeke

+0

@Willeke 답장을 보내 주셔서 감사합니다. 예, 예. 설정을 표시하는 질문이 업데이트되었습니다. – rgbworld

+0

이 문제는 재현 할 수 없지만 확인란을 클릭해도 데이터가 저장되지는 ​​않습니다. 이상한 일이 벌어지고 있는데, 테이블 뷰에서 선택을 처리하는 방법을 찾으려고 할 때이 질문 [NSArrayController preservesSelection을 사용자 정의 객체에 저장하는 방법] (https : // stackoverflow. com/questions/46233759/how-to-make-nsarraycontroller-preservesselection-custom-object를위한 선택). – Willeke

답변

1

체크 박스의 동작은 데이터를 저장하는 사용자 기본 컨트롤러를 트리거합니다. 사용자 기본값이 변경되면 테이블보기가 새로 고쳐집니다. 선택한 행이 복원되지 않습니다.

해결 방법 isEqual(_:)ModifiersRuleTransformer에 구현하십시오.

상세 정보 : How to make NSArrayController preservesSelection work for custom object?

관련 문제