Object-C NSTableView的view-base形式的簡單使用

1. 環境

Mac OSX 10.10.5 + Xcode 7.2.1git

2. 建立工程

3. 控件設置

a. 拖動一個TableView控件和一個Button控件到View Controller.

b. 設置TableView爲view-base形式,並設置顯示爲兩列,網格設爲實線。

c. 設置TableView的一列的Title和Identifier爲Name,一列Title和Identifier爲Phone。

 Identifier是惟一的。github

4. 建立一個類TableViewData

用於操做TableView顯示的數據,TableView的DataSource和AppDelegate綁定到TableViewData類。ide

5. TableViewData相關的設置

a. 增長一個Object實體,Class設置爲TableViewData方便綁定TableView。

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

c. TableView和Button添加到Class TableViewData。

TableView:spa

Button:3d

d. 設置完成後,object的屬性。

6. 實現NSTableView方法。code

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

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

   viewForTableColumn:(NSTableColumn *)tableColumnit

                  row:(NSInteger)row;io

 

 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

相關文章
相關標籤/搜索