天天看点

Mac开发入门及NSTableView的使用(一)

前言:

与iPhone开发不同,mac开发的类大都以NS开头,使用方法有不同之处。

本文涉及项目创建,NSViewController,NSTableView,window的使用。

文章后附demo。

1 创建项目,xcode菜单 File/New/Project

Mac开发入门及NSTableView的使用(一)
Mac开发入门及NSTableView的使用(一)

2 创建NSViewController,右键New File

Mac开发入门及NSTableView的使用(一)
Mac开发入门及NSTableView的使用(一)
Mac开发入门及NSTableView的使用(一)

4 选中xib文件,添加NSTableView控件

Mac开发入门及NSTableView的使用(一)

4 tableview代理,tableview绑定到controller上,tableview两列改为一列。

Mac开发入门及NSTableView的使用(一)
Mac开发入门及NSTableView的使用(一)

5 NSTableCellView的使用,设置identify。

Mac开发入门及NSTableView的使用(一)
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView
{
    return self.dataArray.count;
}
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
    NSTableCellView *cellView = [tableView makeViewWithIdentifier:@"customCellView" owner:self];
    FirstModel *model = self.dataArray[row];
   // cellView.imageView.image = [NSImage imageNamed:@""]; //设置图片
    cellView.textField.stringValue = model.content;        //设置文字
    return cellView;
}
           

6 去掉header

Mac开发入门及NSTableView的使用(一)

6 tableview数据绑定

- (void)initData{
    FirstModel *model1 = [[FirstModel alloc] initWithTitle:@"控件1:" content:@"lable"];
    FirstModel *model2 = [[FirstModel alloc] initWithTitle:@"控件1:" content:@"lable"];
    FirstModel *model3 = [[FirstModel alloc] initWithTitle:@"控件1:" content:@"lable"];
    FirstModel *model4 = [[FirstModel alloc] initWithTitle:@"控件1:" content:@"lable"];
    FirstModel *model5 = [[FirstModel alloc] initWithTitle:@"控件1:" content:@"lable"];
    
    self.dataArray = [NSMutableArray arrayWithCapacity:0];
    [self.dataArray addObject:model1];
    [self.dataArray addObject:model2];
    [self.dataArray addObject:model3];
    [self.dataArray addObject:model4];
    [self.dataArray addObject:model5];
    
    [self.tableview reloadData];
}
           

7 都设置了,运行没效果?别急,还没设置到主window上。在AppDelegate.m里面设置下。

Mac开发入门及NSTableView的使用(一)

8 run运行下 ,效果如下。

Mac开发入门及NSTableView的使用(一)
#import "FirstModel.h"
@interface FirstViewController ()<NSTableViewDelegate,NSTableViewDataSource>

@property (nonatomic,strong) NSMutableArray *dataArray;
@property (weak) IBOutlet NSTableView *tableview;

@end

@implementation FirstViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do view setup here.
    
    [self initData];
   
}
#pragma mark - initData
- (void)initData{
    FirstModel *model1 = [[FirstModel alloc] initWithTitle:@"控件1:" content:@"lable"];
    FirstModel *model2 = [[FirstModel alloc] initWithTitle:@"控件1:" content:@"lable"];
    FirstModel *model3 = [[FirstModel alloc] initWithTitle:@"控件1:" content:@"lable"];
    FirstModel *model4 = [[FirstModel alloc] initWithTitle:@"控件1:" content:@"lable"];
    FirstModel *model5 = [[FirstModel alloc] initWithTitle:@"控件1:" content:@"lable"];
    
    self.dataArray = [NSMutableArray arrayWithCapacity:0];
    [self.dataArray addObject:model1];
    [self.dataArray addObject:model2];
    [self.dataArray addObject:model3];
    [self.dataArray addObject:model4];
    [self.dataArray addObject:model5];
    
    [self.tableview reloadData];
}

#pragma mark - NSTableViewDataSource
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView
{
    return self.dataArray.count;
}
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
    NSTableCellView *cellView = [tableView makeViewWithIdentifier:@"customCellView" owner:self];
    FirstModel *model = self.dataArray[row];
   // cellView.imageView.image = [NSImage imageNamed:@""]; //设置图片
    cellView.textField.stringValue = model.content;        //设置文字
    return cellView;
}
           

demo下载地址:https://download.csdn.net/download/jueyi1127/10315592

继续阅读