문제

Bindings를 내 엔티티에서 하나의 관계에 대해 하나의 관계에 처음으로 사용하고 있습니다. 이미지와 제목을 보여주는 nscollectionView를 사용하여 하위 인텐시를 표시합니다.

객체는 다음과 같습니다.

Subitems Array Controller (NSArrayController)
Collection View Item (NSCollectionViewItem)
.

컨트롤은 다음과 같습니다.

NSCollectionView
NSView (for the item)
   NSImageView
   NSTextField
.

모델 키 경로를 사용하여 컬렉션보기 항목에 NSImageView를 컬렉션보기 항목과 값 변환기로 바인딩했습니다.이 모든 것이 잘 작동합니다.

제가 원하는 것은 코드에서 항목을 두 번 클릭하고 두 번 클릭 항목의 표현 툴에 액세스 할 수 있습니다.

나는 NSImageView를 하위 클래스하려고 시도하고 마우스 이벤트에 대한 마우스 이벤트를 무시하려고했는데, 여기에서 ManagedObject 컨텍스트 및 선택한 개체로 액세스 할 수 없었습니다.이 작업을 수행하는 방법을 확실하지 않습니다.

도움말 덕분에, 나는 이것이 기본적인 것들이며 바인딩 구현으로 잘못된 것을 수행해야합니다.

도움이 되었습니까?

해결책

컬렉션보기 항목에 대한 하위 클래스를 구현하고 CustomCollectionViewItem을 지정하고 IB의 컬렉션보기 항목의 클래스를 변경하십시오.

하위 클래스이 클래스에서 이렇게 두 번 클릭하십시오.약한 참조 델리게이트 객체를 작성 하고이 델리게이트를 IB에서 CustomCollectionViewItem에 바인드합니다.

이제 델리게이트를 요청한 CustomCollectionViewItem 및 CustomCollectionViewItem에서 모든 메소드를 호출하도록 두 번 클릭하면 DelectedObject에 액세스 할 수 있습니다.

이제 문제는이 문제를 실제 컨트롤러 클래스에 추가로 전달하는 방법입니다.CustomCollectionViewItem에서 약한 참조 대리자를 다시 작성 하고이 델리게이트를 IB의 주 컨트롤러 클래스에 바인드해야합니다.

이 CustomCollectionViewItem이 NSImageView 하위 클래스에서 호출을 수신 한 다음 주 Controller 클래스 메소드를 호출하고 EracleDobject를 전달합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top