Object-C NSTableView的view-base形式的简单使用

1. 环境

Mac OSX 10.10.5 + Xcode 7.2.1

2. 创建工程

3. 控件设置

a. 拖动一个TableView控件和一个Button控件到View Controller.

b. 设置TableView为view-base形式,并设置显示为两列,网格设为实线。

c. 设置TableView的一列的Title和Identifier为Name,一列Title和Identifier为Phone。

 Identifier是唯一的。

4. 创建一个类TableViewData

用于操作TableView显示的数据,TableView的DataSource和AppDelegate绑定到TableViewData类。

5. TableViewData相关的设置

a. 增加一个Object实体,Class设置为TableViewData方便绑定TableView。

b. 绑定TableView的DataSource和AppDelegate到Object。

c. TableView和Button添加到Class TableViewData。

TableView:

Button:

d. 设置完成后,object的属性。

6. 实现NSTableView方法。

1.  - (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView

2. - (NSView *)tableView:(NSTableView *)tableView

   viewForTableColumn:(NSTableColumn *)tableColumn

                  row:(NSInteger)row;

 

 TableViewData.h :

#import <Foundation/Foundation.h>
#import <Cocoa/Cocoa.h>

@interface TableViewData : NSObject

@property (weak) IBOutlet NSTableView *tableView;

@property NSMutableArray *rowData;


@end

TableViewData.m :

#import "TableViewData.h"

@implementation TableViewData

- (id)init {
    self = [super init];
    if (self) {
        // Initialize self.
        self.rowData = [[NSMutableArray alloc] init];
    }
    return self;
}


- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView{
    return self.rowData.count;
}

- (NSView *)tableView:(NSTableView *)tableView
   viewForTableColumn:(NSTableColumn *)tableColumn
                  row:(NSInteger)row{
    NSString *identifier = [tableColumn identifier];
    NSDictionary *dict = [self.rowData objectAtIndex:row];
    NSString *value = [dict objectForKey:identifier];
    if (value) {
        NSTableCellView *column = [tableView makeViewWithIdentifier:identifier owner:self];
        column.textField.stringValue = value;
        return column;
    }
    return nil;
}


- (IBAction)clickButtonToUpdateTableView:(id)sender {
    NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:@"John",@"Name",@"123456",@"Phone", nil];
    [self.rowData addObject:dict];
    [self.tableView reloadData];
}



@end

 

代码:github

 

 

 

posted @ 2017-09-11 10:20  笑面浮屠  阅读(1081)  评论(0编辑  收藏  举报