9
A
回答
10
NSTableView
默認爲是基於細胞的,這使得爲了向後兼容感。當表視圖委託實現-tableView:viewForTableColumn:row:
時,表視圖是基於視圖的。您可以輕鬆地測試通過編程方式創建一個表視圖如下:
@implementation BAVAppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
NSView *contentView = self.window.contentView;
NSTableView *tableView = [[NSTableView alloc] initWithFrame:(NSRect){{50, NSMaxY(contentView.frame) - 200}, {400, 200}}];
tableView.dataSource = self;
tableView.delegate = self;
[contentView addSubview:tableView];
NSTableColumn *column = [[NSTableColumn alloc] initWithIdentifier:@"column"];
column.width = 400;
[tableView addTableColumn:column];
}
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
return 3;
}
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
return [NSString stringWithFormat:@"%ld", row];
}
//- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
// NSTextField *textField = [[NSTextField alloc] initWithFrame:(NSRect){.size = {100, 15}}];
// textField.stringValue = [NSString stringWithFormat:@"%ld", row];
// return textField;
//}
@end
如果你運行該代碼註釋掉的委託方法,你就會得到一個基於細胞的表視圖:
如果你取消對委託方法,你就會得到一個基於視圖的表視圖:
的文檔-tableView:viewForTableColumn:row:
指出
,如果你想使用的NSView對象,而不是一個表視圖中的細胞的NSCell對象,則需要此方法。單元格和視圖不能在同一個表格視圖中混合使用。
暗示它是確定表視圖是基於單元格還是基於視圖的條件。
相關問題
- 1. 基於單元格的NSTableView和基於視圖的NSTableView的區別是什麼?
- 2. 基於視圖的NSTableView + NSButton
- 3. 基於視圖的NSTableView
- 4. Xcode Swift。如何以編程方式選擇基於視圖的單元格NSTableView
- 5. 基於視圖的NSTableView的,讓行高度依賴於內容
- 6. 獲取基於NSTableView的NSPopUpButton視圖基於NSTableView
- 7. 基於視圖的NSTableView過濾+動畫
- 8. Drupal視圖 - 基於URL過濾內容
- 9. 基於單元格的NSTableView與黑名單高亮樣式(10.12)
- 10. 在Swift中基於視圖的NSTableView不顯示內容
- 11. 如何通過XSLT基於XML格式
- 12. 複製條件格式基於單元格內容,其他行
- 13. 基於單元格內容的UITableView單元格顏色
- 14. 基於單元格內容的顏色個別JTable單元格?
- 15. 基於視圖的NSTableView/NSOutlineView和isGroupItem
- 16. 擴展基於視圖的NSTableView
- 17. Autolayout在基於視圖的NSTableView中
- 18. 基於視圖的組合框NSTableView
- 19. 基於視圖的NSTableView中的NSPopupButton
- 20. 基於視圖的NSTableView選擇?
- 21. resizableImageWithCapInsets裏面的NSTableView(基於視圖)
- 22. 彈出按鈕在視圖基於NSTableView
- 23. 基於Excel的單元格值設置格式
- 24. 基於動態單元格內容設計DataGridRow?
- 25. 基於單元格內容長度的SSRS過濾
- 26. 如何將基於視圖的NSTableView的單元格值與Swift中的另一個單元格進行比較?
- 27. 使用POI設置基於單元格公式結果的單元格樣式
- 28. 基於單元格數據的iPhone表格視圖單元格樣式
- 29. 可可 - 基於視圖的NSTableView,在多個表中使用一個單元格
- 30. 基於內容的格式ListView
我查看了.h文件中的NSTableView,NSTableViewDelegate和NSTableViewDataSource,並沒有在其中看到任何*明顯的*。我懷疑NSTableView在代碼中的工作方式是它首先嚐試獲取視圖,如果這不起作用,它將執行基於單元的操作。無論哪種方式,99%的開發人員將通過Interface Builder中的彈出窗口選擇「View」或「Cell」。 –