2014-12-29 4 views
0

NSTableView에 표시하려고하는 데이터는 특정 로컬 디렉토리에있는 파일 목록입니다.NSArrayController는 NSTableView에서 올바른 행 수를 표시하지만 실제 데이터는 표시하지 않습니다.

코드에서 나는 A 디렉토리에 액세스하고 파일을 반복하며 각 파일에 대한 세부 정보를 포함하는 NSMutableDictionary를 addObject:을 통해 NSMutableArray에 추가하고 해당 배열을 반환합니다. 이러한 세부 정보는 인스턴스 변수 또는 모델의 속성이 아니며 각각은 런타임에 값이 결정되는 NSString입니다.

별도의 메서드 BA 메서드를 호출하고 반환 된 배열을 반복하며 각 항목을 addObject:을 통해 NSArrayController에 추가합니다.

내 .xib 파일에는 NSMutableArray 인스턴스 변수에 바인딩 된 NSArrayController가 있습니다.이 코드에서 특정 로컬 디렉터리의 파일에 대한 모든 정보가 저장됩니다.

또한 NSTableView의 각 테이블 열 값을 NSArrayController의 관련 모델 키 경로에 바인딩했습니다.

응용 프로그램을 실행하면 NSTableView의 행 수 (해당 로컬 디렉토리의 올바른 파일 수)가 올바르게 표시됩니다. 그러나 각 테이블 열에 표시되는 텍스트 (모든 개별 표 셀에서 모두)는 단지 "표보기 셀"입니다.

NSLog를 사용하여 객체를 NSArrayController에 추가하면 바인딩 된 NSMutableArray 인스턴스 변수도 업데이트된다는 것을 확인했습니다. 또한 무작위로 인스턴스 변수에 저장된 객체를보고 각 테이블 열의 바인딩에 지정된 것과 동일한 모델 키 경로를 통해 해당 파일의 세부 정보에 액세스 할 수 있습니다. NSTableView는 해당 정보를 표시하지 않습니다.

이 문제의 원인에 대한 단서가 있습니까?

편집 : 나는 또한 reloadData을 통해 직접 NSTableView를 새로 고치려고 시도했지만 성공하지 못했습니다.

관련된 경우 NSArrayController에 연결된 NSMutableArray 인스턴스 변수는 NSArrayController에 의해서만 채워집니다. 즉, 코드에서 해당 배열에 객체를 직접 추가하지 않습니다.

답변

2

특성 관리자에 지정된 NSTableView는의 "콘텐츠 모드"설정 었죠이 경우 문제.

기본 설정은 분명히 "보기 기반"이지만 "셀 기반"이어야합니다. 이 변화와 재건을 한 후에, 짜잔! 그것은 효과가 있었다.

+0

몇 시간 동안 이것을 디버깅하려고 노력했습니다 .... 당신은 생명의 은인입니다. –

1

문제가 발생하여 테이블보기가 새로 고침되지 않습니다. 그래서 코드의 라인 아래에 사용 : -

[self.arrController rearrangeObjects]; 
+0

변경하지 않고이 기능을 사용해보십시오. 모든 객체가 NSArrayController에 추가 된 후에 메서드 B에 배치합니다. 또한 루프 자체에 놓으려고 했으므로 새로운 객체가 추가 될 때마다 새로 고침되었습니다. 행운은 없습니다. 대답 주셔서 감사합니다 ~ –

관련 문제