2010-03-05 5 views
0

두 개의 열이있는 NSArrayController에 바인딩 된 NSTableView가 있습니다. 하나의 열은 배열 컨트롤러의 배열 된 객체에 바인딩되어 문자열을 표시합니다.바인딩을 사용하여 NSTableView에 이미지 삽입

다른 열에 이미지를 표시하고 싶지만 작동시키지 못합니다. 나는 칼럼에 NSImageCell을 끌어 왔고 손으로 이미지를 설정했지만 런타임에는 나타나지 않을 것이다. 나는 두 번 확인했고 이미지는 내 resources 디렉토리에 있습니다.

내가 누락 된 항목이 있습니까? 이미지를 표시하려면 어떻게해야합니까?

답변

2

그래서 각 이미지에 동일한 이미지가 나타나게하고 싶습니까? 그것이 당신이 "손으로"설정하는 이유입니까? 이를 위해 NSTableViewDataSource 메서드와 바인딩을 혼합 할 수 있습니다. 아이디어는 문자열 열이 평소대로 바인딩되지만 이미지 열은 바인딩되지 않습니다. 식별자 세트가 있습니다 (예 : "imageColumn"). 그런 다음 numberOfRowsInTableView : 및 tableView : objectValueForTableColumn : row :를 사용하여 배열 컨트롤러의 객체 수 (올바른 행 번호를 제공)를 제공하고 올바른 열의 값을 묻는 경우 항상 정적 이미지를 반환합니다. 귀하의 "imageColumn"), 그렇지 않으면 nil을 반환합니다.

이미지가 정적이 아니거나 (즉, 어떤 종류의 표시기로 사용하려는 경우) 위의 방법 (일부 값을 기반으로 일부 이미지 반환) 또는 바인딩을 사용할 수 있습니다. Bindings를 사용하려면 "상태"(숫자)와 같이 배열 컨트롤러에있는 모든 클래스에 속성을 추가 할 수 있습니다. 그런 다음 상태 번호를 해당 이미지로 변환하는 사용자 정의 NSValueTransformer를 사용합니다. 열은 값 변환기를 사용하여 배열 컨트롤러의 arrangedObjects.status에 바인딩됩니다 (사용 지침은 NSValueTransformer를 참조하십시오. 등록해야만 이름을 사용할 수 있습니다). 결과는 특정 상태에 해당하는 컬럼의 이미지입니다.

관련 문제