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
不负自己