2012-01-16 1 views
2

NSArray의 현재 요소 수인 pages를 레이블에 표시하려고합니다. 다른 가이드를 따라 내가 그랬어 다음레이블의 값을 NSArray의 count 속성에 바인딩합니다.

  1. 하여 만든 IB (pagesController라고 함)에 NSArrayController와
  2. 이 컨트롤러 키 = arrangedObjects와 모델로 NSArrayController에 라벨의 값 속성을 경계 NSArray를 페이지에 경계 키 경로 = @count

문제는 프로그램이 실행 중일 때 레이블이 항상 "0"을 표시한다는 것입니다. 상황이 올바르게 작동하는지 확인하기 위해 사용자가 다른 버튼을 클릭 할 때 메시지를 기록하려고 시도했습니다 (기본적으로 버튼은 페이지 배열에 새 요소를 삽입합니다).이 경우 NSLog(@"count = %d", [self.pagesController valueForKeyPath:@"[email protected]"]); 출력이 정확합니다. 즉 요소의 현재 수 인쇄 된 배열이 정확합니다. 내가 어디에서 실수 한거야?

+0

일부 코드는 어디서 잘못 되었습니까? – vishy

+0

"다른 가이드"는 어떤 것을 수행 했습니까? 나는 구글에서만이 질문을 찾는다. – ohcibi

답변

0

많은 사람들이 KVC를 올바르게 사용하지 않습니다. 배열 컨트롤러는 객체가 배열에 추가 될 때가 아니라 pages 속성이 재정의 된 경우에만 통지됩니다. 적절한 변경 알림을 사용하여 코드를 래핑 해보십시오.

[self willChangeValueForKey:@"pages"]; 
[pages addObject:someObject]; 
[self didChangeValueFOrKey:@"pages"]; 
+0

당신이 옳았어요, 정말 고마워요 !! – renton

관련 문제