2012-04-17 42 views
0

如果我有一對多的關係,我將如何使用NSArray中的數據填充NSTableView?從多個NSArray記錄一次性填充NSTableView

說我有所謂的「字母」的數據項,我想,當用戶選擇它的列表中,在返回值(一個或多個):

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

是英文字母在不同的行中,一個在另一個下面。

可以這樣做嗎? 謝謝!

+0

我試過上面直接調用該方法的一個循環,並通過循環計數器與上面的rowIndex參數.. 我不知道我應該撥打方法直接雖然(除了它不工作的事實),因爲我認爲這是[tableName reloadData]的工作; – Kevin 2012-04-17 08:21:21

+0

我也嘗試過返回數組本身,但我只在第一行得到一個「(」作爲結果.. – Kevin 2012-04-17 08:24:26

+0

你需要閱讀[Table View Programming Guide](https://developer.apple.com) /library/mac/#documentation/Cocoa/Conceptual/TableView/Introduction/Introduction.html),因爲目前你只是在猜測。 – 2012-04-17 08:31:12

回答

2

您需要指定一個對象作爲表視圖的datasource並使該對象符合NSTableViewDataSource協議,或者您需要使用NSArrayController和Cocoa綁定。

如果使用數據源,請實施numberOfItemsInTableView:方法並返回數組的count。你還必須實現-tableView:objectValueForTableColumn:row:

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

這應該是rowIndex而不是在if語句中的行嗎? – Kevin 2012-04-17 08:51:15

+0

上述代碼的問題是(行> -1)從不返回真的,即使你gh numberOfItemsInTableView:正在返回數組的計數(1000+)。 因此,我獲得了1000條以上相同值的記錄。 – Kevin 2012-04-17 09:21:55

+0

是的,它應該是'rowIndex',這是一個錯字。固定。你能發佈你的代碼嗎? – 2012-04-17 10:48:17