3
是否有可能爲基於視圖的NSTableView
的NSTableCellView
單獨的XIB文件?也許在NSViewController
的幫助下?從XIB查看基於視圖的NSTableView的意見?
是否有可能爲基於視圖的NSTableView
的NSTableCellView
單獨的XIB文件?也許在NSViewController
的幫助下?從XIB查看基於視圖的NSTableView的意見?
是的,它似乎是可能的。
從蘋果公司的文檔:
爲了功能,編程實現基於視圖的表必須實現以下:
...
的 - (*的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;
}
希望它有效。我只是把它放在一起,腦子裏有一個粗略的想法。祝你好運!
謝謝!所以contentOfTableView是一些NSView?視圖如何知道要加載哪個NIB? – bijan
如果您將控制器類設置爲View.xib中的文件所有者,然後使用:loadNibNamed,則您正在加載該筆尖本身。通過指定self作爲所有者(比較NSBundle的方法),告訴Cocoa佔位符應該被 - 控制器對象取代。在View.xib中,您將IBOutlet contentOfTableView連接到文件所有者。你的xib加載到內存後,這就是你的控制器。所以你可以完全使用這個插座,就像你在同一個xib中聲明它是一個通常的插座。 – pbx