NSTableView的简单使用示例

NSTableView和UITableView的使用上有些不同,步骤比较繁琐

#import "ViewController.h"

@interface ViewController ()

@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;
}

你可能感兴趣的:(NSTableView的简单使用示例)