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颜色会变回默认颜色,继续摸索中。