2011-09-29 4 views
0

NSPopUpButton에 바인딩을 사용하여 다소 분실했습니다. 나는 팝업에서 표시하고 싶은 배열을 가지고있는 커스텀 클래스를 가지고있다. 이러한 항목은 NSManagedObject의 하위 클래스이며 NSArray에 포함되어 있습니다. 프로그래밍 방식으로 선택 사항을 변경하는 데 많은 어려움을 겪었으므로 구현을 어지럽히는 느낌이 들기 때문에 NSArrayController을 사용하고 싶지 않습니다.NSPopUpButton을 NSArray에 바인딩합니다.

문제는 단순히 배열에 제대로 바인딩하는 방법을 모르겠다는 것입니다. 내가 할 수 있었던 것은 팝업 메뉴에 배열 항목을 나열하는 것이지만 제목은 핵심 데이터 URI입니다. 나는 description 메서드를 사용하여 제목을 변경할 수 있다고 생각하지만,이 방법은 권장하지 않습니다.

NSArrayNSPopUpButton에 제대로 바인딩하는 방법은 무엇입니까?

답변

0

나는 그것을 해결했다고 생각한다. 나는 단순히 NSPopUpButton 이러한 바인딩을 생성 :

  • "선택한 오브젝트"(유형 NSArray*에) items 재산

    1. "콘텐츠"를 "마지막으로

    2. (유형 Item*의) selectedItem에 콘텐츠 값 "에서 items.name까지

    세 번째 바인딩을 위해 나는 valueForKeyPath:

    - (id)valueForKeyPath:(NSString *)keyPath 
    { 
        NSArray *components = [keyPath componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"."]]; 
        if ([components count] == 2 && [components objectAtIndex:0] == @"items") 
        { 
         return [self.items valueForKey:[components objectAtIndex:1]]; 
        } 
        return [super valueForKeyPath:keyPath]; 
    } 
    

    을 구현 세 번째 바인딩도하고 제목에 대한 별도의 배열,하지만이 훨씬 더 유연했습니다 수 있습니다.

  • +0

    해결책 주셔서 감사합니다. 올바른 길을 찾아줍니다. 나는 사전의 배열 인 속성 (myinstance.items)을 가진 클래스가 있다는 것에 주목하고 싶다. 콘텐츠에 배열을 바인딩하고 콘텐츠 값을 myinstnace.items.name에 바인딩하여 사전에 "name"키 값을 포함하는 NSPopupButton을 표시 할 수 있습니다. – Colin

    관련 문제