2011-05-28 25 views
0

我很難用兩個不同的MutableArrays在一個類中填充兩個TableViews。我解析一個* .xml文件,並希望將數據放入不同的tableview中。在'Table View Programming Guide'的'使用表格數據源'章節中,它指出'管理多組數據的數據源對象可以根據NSTableView對象發送消息來選擇合適的集合。​​'我理解這意味着我可以在同一個類中填充來自兩個不同變量陣列的兩個不同的表格視圖。我似乎無法弄清楚如何做到這一點,因爲除了上面引用的內容外,我找不到更多的信息。從兩個不同的NSMutableArrays在同一類中填充兩個NSTableViews

我的tableview人口的代碼是:

- (int)numberOfRowsInTableView:aTableView { 
    return [arrayPowerData count]; 
} 

- (id)tableView:aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)row { 
    PowerData* dataPower = [arrayPowerData objectAtIndex:row]; 
    return [dataPower valueForKey:[aTableColumn identifier]]; 
} 

我知道有在兩個數組數據,因爲我可以在上面的代碼切換數組變量,並將其填充適當的tableview。

[blockTableView reloadData]; 
[dataTableView reloadData]; 

我曾嘗試陣列控制器/綁定路線,但TableViews沒有得到填充,即使我沒有得到任何錯誤消息或警告。我是新來的Cocoa/Objective-C編程,根本不是程序員,所以,任何幫助和/或方向將不勝感激。

回答

2

基本上這裏發生的事情是這兩個表在他們填充時調用這些函數。發生這種情況時,它們將自己作爲表視圖參數aTableView傳遞。因此,爲了使用相同的方法填充兩者,您需要篩選哪個表視圖當前正在調用方法。這裏的基本思路是:

- (int)numberOfRowsInTableView:aTableView { 
    if (aTableView == tableview1) { 
     return [array1 count]; 
    } 
    else if (aTableView == tableview2) { 
     return [array2 count]; 
    } 
} 

-(id)tableView:aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)row { 
    if (aTableView == tableview1) { 
     //populate tableview1 with the corresponding array 
    } 
    else if (aTableView == tableview2) { 
     //populate tableview2 with the other array 
    } 
} 
+0

非常感謝。它現在像一種魅力。 – SBeckett 2011-05-30 14:37:55

相關問題