2012-05-09 25 views

回答

2

是的,它似乎是可能的。

從蘋果公司的文檔:

爲了功能,編程實現基於視圖的表必須實現以下:

...

的 - (*的NSView)的tableView: viewForTableColumn:row:由NSTableViewDelegate協議定義的方法。此方法既爲表格提供視圖,以顯示特定列和行的單元格,也使用適當的數據填充該單元格。

通過這種方式,您可以擁有類NSView(或任何子類)的對象,然後在正確填充數據後將其返回。你從哪裏得到這個東西,是不感興趣的。據我所知,有可能做到以下幾點,例如:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{ 
    // Assume you have a XIB called View.xib 
    [NSBundle loadNibNamed:@"View" owner:self]; 

    // And you have an IBOutlet to your NSTableView (that's view based) called tView 
    [tView reloadData]; 
} 

- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView { 
    return 20; 
} 

- (NSView *)tableView:(NSTableView *)tableView 
    viewForTableColumn:(NSTableColumn *)tableColumn 
        row:(NSInteger)row { 


    // Assume your class has an IBOutlet called contentOfTableView, 
    // your class is File's Owner of the View.xib and you connected the outlet. 
    return contentOfTableView; 

} 

希望它有效。我只是把它放在一起,腦子裏有一個粗略的想法。祝你好運!

+0

謝謝!所以contentOfTableView是一些NSView?視圖如何知道要加載哪個NIB? – bijan

+1

如果您將控制器類設置爲View.xib中的文件所有者,然後使用:loadNibNamed,則您正在加載該筆尖本身。通過指定self作爲所有者(比較NSBundle的方法),告訴Cocoa佔位符應該被 - 控制器對象取代。在View.xib中,您將IBOutlet contentOfTableView連接到文件所有者。你的xib加載到內存後,這就是你的控制器。所以你可以完全使用這個插座,就像你在同一個xib中聲明它是一個通常的插座。 – pbx

相關問題