3

오류가 발생하지만 NSCollectionView에보기가로드되지 않습니다.NSCollectionView/엑스 코드 3.2

보기를 표시하려면 다른 작업이 필요합니까? 또는 NSCollectionItem의 수퍼 클래스를 NSViewController으로 변경하면이 작업을 수행 할 수있는 더 나은 방법이 있습니까?

결국이 표준 기능을 달성하기 위해 copyWithZone을 재정의하는 것은 항상 나에게 해킹처럼 보였습니다. 나는 IB에서 사용하기로되어있는 펜촉을 지정할 수 있어야한다고 생각하지만, 애플은 그렇게 생각하지 않는다.

문서에서 사용할 수있는 예제를 살펴 보았지만 NSCollectionViewIteminitWithNibName을 사용하여 프로그래밍 방식으로 인스턴스화되었지만 IB로 작성하려고합니다.

UPDATE :

내가 제안,하지만 지금은 NSCollectionViewItem에서 콘센트에 액세스 할 수있는 kperryua했다

. 여기에 내가 할 노력하고있어 무엇 :

- (void)setRepresentedObject:(id)object { 

    if (object) { 
     [labelName setValue:[object name]]; 
    } 
} 

내가 내 NSCollectionViewItem 인 파일 소유자에 레이블 이름을 바인더 제본. 이전에는 10.5에서 완벽하게 작동했지만 이전에는 콘센트가 지정되지 않았습니다 (GDB에서 확인).

image showing the bindings http://img21.imageshack.us/img21/671/picya.png

업데이트 2는 :

또한 바인더 제본 NSCollectionViewitemPrototypeNSCollectionViewItem (PersonController)의 내 서브 클래스.

image showing bindings http://img503.imageshack.us/img503/4672/pic2d.png

지금 PersonView.nib의 모두 File's Owner 내 서브 클래스에 NSCollectionView 점의 itemPrototype.

image showing console output http://img340.imageshack.us/img340/6184/pic3.png

당신이 항목이 표시되지만 출구 labelName에 액세스 할 수없는 것처럼 라벨의 텍스트를 변경할 수 없습니다 스크린 샷에서 볼 수 있듯이

.

'이름'이 아닌지 확인하기 위해 설정하려는 이름도 기록했습니다.

라벨의 값을 변경하려면 어떻게해야합니까?

도움을 주시면 감사하겠습니다.

답변

4

예, Snow Leopard를 사용하면 훨씬 쉽게 처리 할 수 ​​있습니다. IB에서 NSCollectionViewItem을 클릭하고 펜촉 이름과 번들 이름을 설정합니다 (주 번들에 대해 비워 두십시오). PersonView nib에서 NSCollectionViewItem을 File 's Owner로 만들고 -view outlet을 해당 펜의 뷰에 연결하십시오.(이 펜촉은 이미 코코아에서 설정 한 것처럼 보일 수 있습니다.) 다른 모든 것은 자동이어야하며 copyWithZone을 무시해야합니다 : 필요하지 않아야합니다.

+0

감사합니다. 지금 나타나고 있지만 Item View가있는 펜촉의 FileOwner에 바인딩 한 콘센트에 액세스 할 수 없습니다. 나는 지금 그렇게해야합니까? –

+0

무슨 뜻인지 모르겠습니다. 당신은 정교 할 수 있습니까? – kperryua

+0

내 대답을 편집하여 내 뜻을 알려줍니다. –

0

representedObject의 속성을 IB 요소의 값과 동기화하려면 Cocoa 바인딩을 사용하는 것이 좋습니다. TextField의 값을 모델 키 경로representedObject.name의 파일 소유자에 바인딩하십시오.

10.6 Xcode 3.2 으로 작업했는데 작동하지 못한 것은 IB Element를 내 CollectionViewItem의 콘센트에 연결 한 것입니다. CollectionViewItem의 사용자 지정 하위 클래스가 있으며 모든 설정은 사용자가 설정 한대로합니다. 응용 프로그램을 실행하지만 그것은 진술 실패

[NSTextField있는 copyWithZone가 :] : 05 : 인식 할 수없는 선택 예를 0x210a60 2009-10-19 (13)로 전송 18.772 WrapperTest [24122 : a0f] 캐치되지 않는 예외가 발생했다 2009-10-19 13 : 05 : 18.774 WrapperTest [24122 : a0f] - [NSTextField copyWithZone :] : 알 수없는 선택기가 인스턴스 0x210a60에 전송 됨 2009-10-19 13 : 05 : 18.779 WrapperTest [24122 : a0f] *** 종료 중 'NSTextField copyWithZone :] : 인식 할 수없는 셀렉터가 인스턴스 0x210a60에 전송 됨 *** 처음 호출시 호출 스택 : ( 0 CoreFound ATION의 0x977f658a __raiseError + 410 1 libobjc.A.dylib 0x9767ff49 objc_exception_throw + 56 2 CoreFoundation에서의 0x978429db - [NSObject의 (NSObject의) doesNotRecognizeSelector :] + 187 3 CoreFoundation에서 0x9779e026 ___forwarding___ + 950 4 CoreFoundation에서 0x9779dbf2 _CF_forwarding_prep_0 + 50 5 CoreFoundation에서의 0x97789a5a - [NSObject의 (NSObject의)는 복사] + (42) 6 AppKit의 0x918ce1d7 - [NSViewController setTitle이라는 :] + 70 7 AppKit의의 0x91167dab - [NSNibOutletConnector establishConnection] + 406 ...

나는 그 NSTextFields가 왜 확실하지 않다 그들의 누락되었습니다그것들을 구현해야하기 때문에

나는 그 아웃렛들을 뷰의 프로퍼티로 선언해야한다는 것을 알지 못했지만 바인딩을 포함한 모든 것이 작동하는 것처럼 보였다.