2012-04-17 2 views
0

일대 다 관계가 있다면 NSArray에서 찾을 수있는 데이터로 NSTableView를 채우는 방법은 무엇입니까? 한 번에 여러 NSArray 레코드에서 NSTableView 채우기

내가 "알파벳"이라는 데이터 항목을 말해봐, 나는 사용자가 목록에서 그것을 선택하는 경우에 반환 값 (들) 것을 원하는 :

-(id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex 

알파벳의 편지입니다 서로 다른 행에, 하나는 다른 행에 있습니다.

할 수 있습니까? 감사합니다.

+0

.. 나는 내가 전화하기로되어있어 확실하지 않다 메서드를 직접 (비록 그것이 작동하지 않는다는 사실을 제외하고), 나는 그것이 [tableName reloadData]의 작업이라고 생각한다. – Kevin

+0

배열 자체를 반환하려고했지만 결과적으로 첫 번째 행에 "("가 표시됩니다. – Kevin

+0

[Table View 프로그래밍 가이드] (https://developer.apple.com)을 읽어야합니다. /library/mac/#documentation/Cocoa/Conceptual/TableView/Introduction/Introduction.html) 당신이 추측하고있는 바로 그 순간이기 때문에. –

답변

2

개체를 테이블보기의 datasource으로 할당하고 해당 개체가 NSTableViewDataSource 프로토콜을 따르도록하거나 NSArrayController 및 코코아 바인딩을 사용해야합니다.

데이터 소스를 사용하는 경우 numberOfItemsInTableView: 메서드를 구현하고 배열의 count을 반환하십시오. 또한 -tableView:objectValueForTableColumn:row:를 구현해야 내가 루프에서 위의 직접 메소드를 호출하고 위의 rowIndex에 매개 변수로 루프 카운터를 전달하려고했습니다

-(id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex 
{ 
    if(rowIndex > -1) 
    { 
     return [yourArray objectAtIndex:rowIndex]; 
    } 
    return nil; 
} 
+0

if 문에서 행 대신 rowIndex가되어야합니까? – Kevin

+0

위 코드의 문제는 (행> -1) 결코 반환되지 않습니다. 참, 심지어 너 gh numberOfItemsInTableView : 배열 (1000+)의 수를 반환합니다 .. 따라서 동일한 값의 1000 개 이상의 레코드가 생성됩니다. – Kevin

+0

네, 오타였던'rowIndex'이어야합니다. 결정된. 코드를 게시 할 수 있습니까? –