zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    正则表达式
    python 多线程编程之threading模块(Thread类)创建线程的三种方法
    python 多线程编程之_thread模块
    python 多线程编程之使用进程和全局解释器锁GIL
    python 多线程编程之进程和线程基础概念
    python操作文件——序列化pickling和JSON
    python操作文件和目录查看、创建、删除、复制
    python同步IO编程——StringIO、BytesIO和stream position
    python同步IO编程——基本概念和文件的读写
    python单元测试unittest、setUp、tearDown()
  • 原文地址:https://www.cnblogs.com/v-BigdoG-v/p/7503700.html
Copyright © 2011-2022 走看看