NSTableView 表格操作:增加,删除,编辑(方法2)

NSTableView 表格操作:增加,删除,编辑(方法2)

在:

NSWindowController

新建表单

(H,M,XIB三个文件+新建一个类放CellData)

1.不使用delegate

2.数据源直接是当前文件File‘s Owner

3.H继承NSTableView协议,将需要的几个函数放入

4.增加一个列表数据单元类

这个方法的特点是:

当新建立一个窗体,显示一个表格内容,不使用Deleget就少了一个类的2个文件,让程序简单化

操作步骤:

STEP1 将NSTableView的DataSource拉向File‘s Owner(这一步相当于之前用另外一个类和Deleget作为表格的数据源)

STEP2 将这个控件在H里面申明

STEP3 在XIB对应的H里面增加这个控件的协议

STEP4 在M文件里面,需要将协议必备的几个函数写入,并且修改对应的代码

注意:数据源和定义申明的时候,选择表格(不包括标题),选择2次就可以选中

注意:每个列:ID值是数据单元中申明的变量,需要复制,不能手动选择

本人测试成功!

以下是源代码

表格对应的数据单元

H文件

@interface List_Column :
NSObject

{

NSString *col_no;

}

@property (readwrite,copy)
NSString *col_no;

@end

M文件

#import "List_Column.h"

@implementation List_Column

@synthesize  col_no;

@end

XIB对应的类,这个类用来作为表格的DataSource

H文件

#import <Cocoa/Cocoa.h>

#import "List_Column.h"

@interface List :
NSWindowController <NSTableViewDataSource>

{

NSMutableArray *m_table_rows;

IBOutlet NSTableView *m_table_list;

NSThread *m_thread_load_list;

}

@end

M文件

#import “List.h"

@interface List ()

@end

static
bool g_can_click_load =
true;

@implementation
List

- (id)init

{

if (![super
initWithWindowNibName:@"List"])

{

return
nil;

}

m_table_rows = [[NSMutableArray
alloc] init];

[self
Load];

return
self;

}

// Show Top 1 ++

- (IBAction)showWindow:(id)sender

{

[[NSApplication
sharedApplication] runModalForWindow:self.window];

}

-(void)closeModalWindow:(id)sender

{

[[NSApplication
sharedApplication] stopModal];

}

- (void)windowWillClose:(NSNotification *)notification

{

[self
performSelectorOnMainThread:@selector(closeModalWindow:)
withObject:nil
waitUntilDone:NO];

}

// Show Top 1 --

//---

- (id)initWithWindow:(NSWindow *)window

{

self = [super
initWithWindow:window];

if (self)

{

// Initialization code here.

}

return
self;

}

- (void)windowDidLoad

{

[super
windowDidLoad];

}

-(void)Load

{

if (true ==
g_can_click_load)

{

g_can_click_load =
false;

}

else

{

return ;

}

[self
thread_do_load];

}

-(void)thread_do_load

{

//主线程:不需要申明变量

//[self performSelectorOnMainThread:@selector(thread_function_main) withObject:self waitUntilDone:YES];

//次线程,需要申明

m_thread_load_list = [[NSThread
alloc] initWithTarget:self
selector:@selector(thread_do_load_function)
object:nil];

//次线程开始

[m_thread_load_list
start];

}

-(void)thread_do_load_function

{

[m_table_rows
removeAllObjects];

[m_table reloadData];

[self
TableView_FullData];

g_can_click_load =
true;

[m_thread_load_list
cancel];

m_thread_load_list =
nil;

}

-(void)TableView_FullData

{

int count = (int)contact_groups.size();

for (int i=0; i<count; i++)

{

text=[NSString
stringWithFormat:@"%d",i+1];

List_Column *newRecord = [[List_Column
alloc]
init];

newRecord.col_no = text;

[m_table_rows
addObject:newRecord];

[m_table reloadData];

[m_table
scrollRowToVisible:[m_table_rows
count] -
1];

}

}

// 表格 +++

// 以下是对控件NSTableView控件的支持函数

#pragma mark -

#pragma mark ***** Required Methods (unless bindings are used) *****

//[TableView Must Be]+++++

- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView

{

NSInteger index_value=[m_table_rows
count];

return index_value;

}

-  (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn
*)tableColumn row:(NSInteger)row

{

List_Column *rows =[m_table_rows
objectAtIndex:row];

return [rows valueForKey:[tableColumn
identifier]];

}

//[TableView Must Be]----

#pragma mark -

#pragma mark ***** Optional Methods ***** [++++]

// NOTE: This method is not called for the View Based TableView.

-(void)tableView:(NSTableView *)tableView setObjectValue:(id)object forTableColumn:(NSTableColumn
*)tableColumn row:(NSInteger)row

{

List_Column *rows = [m_table_rows
objectAtIndex:row];

[rows
setValue:object forKey:[tableColumn
identifier]];

}

- (void)tableView:(NSTableView *)tableView sortDescriptorsDidChange:(NSArray
*)oldDescriptors;

{

[m_table_rows
sortUsingDescriptors:[tableView sortDescriptors]];

[tableView
reloadData];

}

#pragma mark ***** Optional Methods ***** [----]

@end

test OK!

2014-9-26 BY DMD 总结(此方法比之前的方法又简单了一大步)!

时间: 2024-11-10 03:58:50

NSTableView 表格操作:增加,删除,编辑(方法2)的相关文章

jquery 表格的增加删除和修改及设置奇偶行颜色

最近一周在学了一点点HTML, CSS, javascript,用javascript的jquery完成了一个简单的表格操作,有增加.删除和修改功能. 表格分三列,第一列是学生编号(ID号),第二列是学生姓名,第三列为学生年龄.在姓名和年龄框内输入数据,再点"Add"就可以增加数据(ID号会自动递增的生成),输入ID号再输入新的姓名和年龄点"Edit"就可以修改,删除的话输入ID号就点"Delete"就可以删除指定行. 表格最上面会及时更新当前表

angular表格操作,删除,添加,修改

<script> var app=angular.module("app",["ngRoute"]); app.config(function ($routeProvider) { $routeProvider.when("/tian",{ templateUrl:"tian.html", controller:"ctr" }).when("/up",{ templateUr

C# 增加 删除 更新 方法

/// <summary> /// 增加一条数据 /// </summary> public int Add(string 表名,string 参数,string 参数值) { StringBuilder strSql = new StringBuilder(); strSql.Append("insert into "); strSql.Append(表名); strSql.Append("("); strSql.Append(参数); s

Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 &#39;AR模式&#39;]

public function getMinLimit () {        $sql = "...";        $result = yii::app()->db->createCommand($sql);        $query = $result->queryAll();         return array (                $query [0] ['max'],         );    } $connection=Yii::

JS实现可编辑的表格,双击可编辑,可以删除行和列,增加行和列,重置,导出表格,也可以上下移动元素

JS实现可编辑的表格,双击可编辑,可以删除行和列,增加行和列,重置,导出表格,也可以上下移动元素  原文:JS实现可编辑的表格,双击可编辑,可以删除行和列,增加行和列,重置,导出表格,也可以上下移动元素 源代码下载地址:http://www.zuidaima.com/share/1550463322606592.htm 源代码截图: JS实现可编辑的表格,双击可编辑,可以删除行和列,增加行和列,重置,导出表格,也可以上下移动元素

js+jquery动态设置/增加/删除/获取元素属性的两种方法集锦对比(动态onclick属性设置+动态title设置)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html140/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <title>

DataList的使用 分页 用Button删除 编辑 datalist中的内容 数据源的绑定 及表格的使用

以前没接触过datalist  这次做项目第一次使用它   遇到一些问题  所以跟大家分享一下  以后遇到问题可以节约点时间  先来个效果图吧   先来说模版八   我用的是ItemTemplate模块   1:先在页面中假如datalist控件  接下来我们编辑模块选择ItemTempalte选项 然后结束模版编辑  2:数据源的绑定   数据源根据你自己的情况来选择 我的数据在sql中  所以选的这个   按上面表好的步骤操作    4是你自己的数据库名称   测试成功后一路默认选择下一步 

UITableView 编辑模式(增加-删除-移动---自定义左滑 title)

- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. self.dataArray = [NSMutableArray arrayWithArray: @[@"1",@"2",@"3",@"4",@"5",@"6"

MongoDB .Net Driver(C#驱动) - 内嵌数组/嵌入文档的操作(增加、删除、修改、查询(Linq 分页))

目录 一.前言 (一) 运行环境 二.前期准备工作 (一) 创建 MongoDBContext MongoDb操作上下文类 (二)创建测试类 (三) 创建测试代码 三.内嵌数组增加元素操作 (一) Update.Set()方法 替换内嵌数组(不推荐使用) (二)Update.Push()方法 直接将元素压入内嵌数组(推荐) (三) Update.PushEach()方法 将多个元素压入内嵌数组(推荐) 四.内嵌数组删除元素操作 (一) Update.Set()方法 替换内嵌数组(不推荐使用) (