NSTableView和UITableView的使用上有些不同,步骤比较繁琐
#import "ViewController.h"
@interface ViewController ()<NSTableViewDataSource,NSTableViewDelegate>
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 1.0.创建卷轴视图
NSScrollView *scrollView = [[NSScrollView alloc] init];
// 1.1.有(显示)垂直滚动条
scrollView.hasVerticalScroller = YES;
// 1.2.设置frame并自动布局
scrollView.frame = self.view.bounds;
scrollView.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable;
// 1.3.添加到self.view
[self.view addSubview:scrollView];
// 2.0.创建表视图
NSTableView *tableView = [[NSTableView alloc] init];
tableView.frame = self.view.bounds;
// 2.1.设置代理和数据源
tableView.delegate = self;
tableView.dataSource = self;
// 2.2.设置为ScrollView的documentView
scrollView.contentView.documentView = tableView;
// 3.0.创建表列
NSTableColumn *columen1 = [[NSTableColumn alloc] initWithIdentifier:@"columen1"];
// 3.1.设置最小的宽度
columen1.minWidth = 150.0;
// 3.2.允许用户调整宽度
columen1.resizingMask = NSTableColumnUserResizingMask;
// 3.3.添加到表视图
[tableView addTableColumn:columen1];
// 4.0.同理,表列都是这么创建的
NSTableColumn *columen2 = [[NSTableColumn alloc] initWithIdentifier:@"columen2"];
columen2.minWidth = 150.0;
columen2.resizingMask = NSTableColumnAutoresizingMask | NSTableColumnUserResizingMask;
/*****
NSTableColumnNoResizing 不能改变宽度
NSTableColumnAutoresizingMask 拉大拉小窗口时会自动布局
NSTableColumnUserResizingMask 允许用户调整宽度
***/
[tableView addTableColumn:columen2];
}
// 设置行数
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView{
return 15;
}
// 设置Cell
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
// 1.0.创建一个Cell
NSTextField *view = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 100, 30)];
view.bordered = NO;
view.editable = NO;
// 1.1.判断是哪一列
if ([tableColumn.identifier isEqualToString:@"columen1"]) {
view.stringValue = [NSString stringWithFormat:@"第1列的第%ld个Cell",row + 1];
}else if ([tableColumn.identifier isEqualToString:@"columen2"]) {
view.stringValue = [NSString stringWithFormat:@"第2列的第%ld个Cell",row + 1];
}else {
view.stringValue = [NSString stringWithFormat:@"不知道哪列的第%ld个Cell",row + 1];
}
return view;
}
// 设置行高
- (CGFloat)tableView:(NSTableView *)tableView heightOfRow:(NSInteger)row{
return 30;
}