2012-07-17 5 views
0

NSArrayController의 하위 클래스 인 MyArrayController 클래스를 만들고이를 테이블에 바인딩합니다. 내가 명시 적으로 ALLOC하지 않기 때문에, 나는 그것을 자동으로 코코아에 의해 만들어진 생각 (NSArrayController 서브 클래스의 초기화 메소드를 구현하는 방법

-initWithPerson:(Person *)person; 

하지만 MyArrayController 때문에 자동으로 생성됩니다 :

나는 방법을 사용하여 같은 MyArrayController 객체에 사람 개체를 전달할 필요), MyArrayController의 객체를 가져올 수 없거나 명시 적으로 초기화 할 수 없습니다.

Person 객체를 MyArrayController로 설정하려면 어떻게해야합니까?

+0

"사람 개체를"배열 컨트롤러로 전달한다는 것은 무엇을 의미합니까? 해당 객체를 컨트롤러의 정렬 된 객체에 추가하겠습니까? – rdelmar

+0

이것은 두 개의 테이블이있는 대화 내용 스크립트 프로그램과 같습니다. 테이블 1은 사람 목록입니다. 대화 상대를 보여주는 테이블 2를 표시하는 창을 사람이 클릭하면 팝업됩니다. 나는 테이블 2, 테이블 2에 MyArrayController를 구현하는데, 사람의 이름을 사용하여 열 1에 표시한다. – NOrder

답변

1

이 작업을 수행하는 일반적인 방법은 NSArrayController 하위 클래스를 사용하지 않는 것입니다. 귀하의 설명에서 당신은 그 내용을 지정하려고 시도하고있는 NSArrayController의 행동을 바꾸려고하지 않습니다. 이를 수행하는 방법은 nib 파일에 NSArrayController을 넣고 테이블에 바인딩하는 것입니다. NSArrayController에 바운 NSWindowController 또는 NSViewControllerIBOutlet을 추가하십시오. 테이블에 표시 할 내용으로 NSArray을 만들고 미리 채 웁니다. 그런 다음 awakeFromNib 또는 windowDidLoad 메서드에서 setContent:을 호출하여 NSArrayController의 내용 배열을 NSArray으로 설정합니다. 대략적으로 :

IBOutlet NSArrayController *myArrayController; 

    NSArray *contentArray = [NSArray arrayWithObject:person]; 
    [myArrayController setContent:contentArray]; 
+0

고맙다. IBOutlet을 만들면 모든 것이 잘된다. – NOrder

관련 문제