당신이 그것을 이해하기 위해 일단 그것은, 정말 아주 간단에 따라 배열에 액세스하는 데 그 위임 방법을 사용 (물론!). NSArray를 테이블 소스로 직접 사용할 수 없습니다. NSTableViewDataSource을 구현하는 사용자 지정 개체를 만들거나 기존의 일부 클래스 (일반적으로 컨트롤러)에서 해당 프로토콜을 구현해야합니다. Xcode를 사용하여 표준 문서 기반 응용 프로그램을 만드는 경우 문서 컨트롤러 클래스 (MyDocument라고 함)는 사용하기 좋은 클래스입니다.
당신은 적어도 다음 두 가지 방법을 구현해야합니다
– numberOfRowsInTableView:
– tableView:objectValueForTableColumn:row:
당신은 그 값을 하나 열, 같은있는 테이블보기에서 사용하고 싶습니다 변경 가능한 배열이있는 경우로해야 다음 시작 :
– numberOfRowsInTableView: (NSTableView*) aTableView
{
return [myMutableArray count];
}
– tableView: (NSTableView*) aTableView objectValueForTableColumn: (NSTableColumn *)aTableColum row: (NSInteger)rowIndex
{
return [myMutableArray objectAtIndex: rowIndex];
}
단지 당신이있는 NSArray는 self
와 myMutableArray
를 교체하는 카테고리로 위의 두 가지 방법을 추가 할 수 있습니다 다음 데이터 소스와 같은 배열을 사용할 수있는 나에게 발생했습니다.
어쨌든, 변경 가능한 배열, 당신이 테이블 뷰 -reloadData
를 보낼 필요가 있도록 변경 언제든지, 당신은,이 변경되었습니다 알고있는 테이블보기를 할 필요가 있다는 것이 중요하다. 테이블 뷰는 하나 이상의 열이 있고 당신이 당신의 배열에있는 객체의 속성을 채우려면
, 당신은 자신을 위해 더 쉽게 할 수있는 트릭이있다.이제 배열의 개체 정의의 두 가지 방법으로 사람이라는 클래스의 인스턴스 인 가정 해 봅시다 :
-(NSString*) givenName;
-(NSString*) familyName;
은 당신이 당신의 테이블보기 그 각각에 대해 열을 갖고 싶어, 당신은 각 열의 identifier
속성을 설정할 수 있습니다 당신이 valueForKeyPath:
와 valueForKey:
을 대체하고 Person 클래스는 다음과 같은 방법이있는 경우
– tableView: (NSTableView*) aTableView objectValueForTableColumn: (NSTableColumn *)aTableColum row: (NSInteger)rowIndex
{
Person* item = [myMutableArray objectAtIndex: rowIndex];
return [item valueForKey: [tableColumn identifier]];
}
:
을 해당 열을 표시하고 다음과 같은 것을 사용하는 것이 사람의 속성의 이름
-(Person*) mother;
-(Person*) father;
-(NSString*) fullName; // concatenation of given name and family name
과 같은 식별자를 가진 테이블 열을 추가 할 수 있습니다 : father.fullName
또는 mother.familyName
값이 자동으로 입력됩니다.
이 링크가 작동하지 않습니다! 그것을 업데이트하십시오! – elin3t