NSTableView的簡單使用示例

NSTableView和UITableView的使用上有些不同,步驟比較繁瑣

#import "ViewController.h"

@interface ViewController ()<NSTableViewDataSource,NSTableViewDelegate>

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // 1.0.創(chuàng)建卷軸視圖
    NSScrollView *scrollView    = [[NSScrollView alloc] init];
    // 1.1.有(顯示)垂直滾動條
    scrollView.hasVerticalScroller  = YES;
    // 1.2.設(shè)置frame并自動布局
    scrollView.frame            = self.view.bounds;
    scrollView.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable;
    // 1.3.添加到self.view
    [self.view addSubview:scrollView];
    
    // 2.0.創(chuàng)建表視圖
    NSTableView *tableView      = [[NSTableView alloc] init];
    tableView.frame             = self.view.bounds;
    // 2.1.設(shè)置代理和數(shù)據(jù)源
    tableView.delegate          = self;
    tableView.dataSource        = self;
    // 2.2.設(shè)置為ScrollView的documentView
    scrollView.contentView.documentView = tableView;
    
    // 3.0.創(chuàng)建表列
    NSTableColumn *columen1     = [[NSTableColumn alloc] initWithIdentifier:@"columen1"];
    // 3.1.設(shè)置最小的寬度
    columen1.minWidth           = 150.0;
    // 3.2.允許用戶調(diào)整寬度
    columen1.resizingMask       = NSTableColumnUserResizingMask;
    // 3.3.添加到表視圖
    [tableView addTableColumn:columen1];
    
    // 4.0.同理,表列都是這么創(chuàng)建的
    NSTableColumn *columen2     = [[NSTableColumn alloc] initWithIdentifier:@"columen2"];
    columen2.minWidth           = 150.0;
    columen2.resizingMask       = NSTableColumnAutoresizingMask | NSTableColumnUserResizingMask;
    /*****
     NSTableColumnNoResizing        不能改變寬度
     NSTableColumnAutoresizingMask  拉大拉小窗口時會自動布局
     NSTableColumnUserResizingMask  允許用戶調(diào)整寬度
     ***/
    [tableView addTableColumn:columen2];
    
}

// 設(shè)置行數(shù)
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView{
    return 15;
}

// 設(shè)置Cell
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
    
    // 1.0.創(chuàng)建一個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;
}

// 設(shè)置行高
- (CGFloat)tableView:(NSTableView *)tableView heightOfRow:(NSInteger)row{
    return 30;
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,781評論 25 709
  • 首先講,泰國是一個佛教國家,95%的人都信奉佛教,因此,圍繞著佛教,就衍生了一些周邊文化,佛牌便是其中之一。泰國僧...
    馮巖熙閱讀 892評論 0 0
  • 公公因胃癌去世了,才四十九歲,扔下了婆婆和一雙兒女。 一年以后,婆婆扔下兩個未成家的孩子——山和玲,改嫁了。 婆婆...
    掃云閱讀 3,765評論 80 110
  • 《匆匆》 什么叫光陰似箭 什么叫日月如梭 什么叫時光荏苒 就是你還在回味昨晚做了什么的時候 看看窗外,今天的日頭已...
    桃園愚人閱讀 205評論 0 0
  • 愛你的那么多年,我一直痛并快樂著。
    小消宵笑閱讀 269評論 0 0

友情鏈接更多精彩內(nèi)容