1、代碼實現NSTableView
_tableView = [[NSTableView alloc] initWithFrame:NSMakeRect(0, 0, 162, 643)];
? ? _tableView.delegate = self;
? ? _tableView.dataSource = self;
? ? NSTableColumn *column = [[NSTableColumn alloc] initWithIdentifier:@"field1"];
? ? column.width=162;
? ? [_tableViewaddTableColumn:column];
? ? NSScrollView *scrollView = [[NSScrollView alloc] initWithFrame:NSMakeRect(0, 0, 162, 643)];
? ? scrollView.backgroundColor = [NSColor purpleColor];
? ? [scrollViewsetDocumentView:_tableView];
? ? [selfaddSubview:scrollView];
? ? scrollView.backgroundColor = [NSColor greenColor];
? ? [_tableView reloadData];
2、必要的兩個 datasource
/** 返回顯示行數 */
- (NSInteger)numberOfRowsInTableView:(NSTableView*)tableView;
/** 純文本調用該方法直接返回字符串 */
- (id)tableView:(NSTableView*)tableView objectValueForTableColumn:(nullableNSTableColumn*)tableColumn row:(NSInteger)row;
或者
/** 自定義界面 */
- (NSView*)tableView:(NSTableView*)tableView viewForTableColumn:(NSTableColumn*)tableColumn row:(NSInteger)row;
例:
- (NSView*)tableView:(NSTableView*)tableView viewForTableColumn:(NSTableColumn*)tableColumn row:(NSInteger)row
{
? ? NSTableCellView *cell = [tableView makeViewWithIdentifier:@"NSTableCellView的標識" owner:nil];
? ? cell.imageView.image = [NSImage imageNamed:dic[@"icon"]];
? ? cell.textField.stringValue = dic[@"title"];
? ? return cell;
}
/** 設置cell選中高亮顏色 */
- (BOOL)tableView:(NSTableView*)tableView shouldSelectRow:(NSInteger)row
{
? ? NSTableRowView *myRowView = [self.tableView rowViewAtRow:row makeIfNecessary:NO];
? ? [myRowViewsetSelectionHighlightStyle:NSTableViewSelectionHighlightStyleRegular];
? ? [myRowViewsetEmphasized:NO];
? ? return YES;
}
注:選中狀態切換到其他app再切換回來,選中的cell顏色會變回默認顏色,繼續摸索中。