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

  • 相关阅读:
    Codeforces Round #333 (Div. 2) B. Approximating a Constant Range st 二分
    Codeforces Round #333 (Div. 2) A. Two Bases 水题
    SPOJ 1557. Can you answer these queries II 线段树
    线段树 模板
    Codeforces Round #115 B. Plane of Tanks: Pro 水题
    Codeforces Round #115 A. Robot Bicorn Attack 暴力
    Codeforces Beta Round #51 C. Pie or die 博弈论找规律 有趣的题~
    Codeforces Beta Round #51 B. Smallest number dfs
    Codeforces Beta Round #51 A. Flea travel 水题
    Codeforces Beta Round #51 D. Beautiful numbers 数位dp
  • 原文地址:https://www.cnblogs.com/v-BigdoG-v/p/7503700.html
Copyright © 2011-2022 走看看