[Cocoa-4th] Chapter6 - Todo List : Table View (1)
来源:互联网 发布:女友约过炮 知乎 编辑:程序博客网 时间:2024/05/16 15:33
这个例子在:Cocoa-4th 里面的 Chapter6 - Todo List
实现的功能:
1.给列表一些行,并且里面有value
2.可以增加一行
具体需要做的事情是:
STEP 1
打开XCODE编辑器,然后New Application默认,命名为test_list_one_col
这时候会自动声唱三个文件,代码如下,都是系统生成的,不用动。
EDUAppDelegate.m
#import "EDUAppDelegate.h"@implementation EDUAppDelegate- (void)dealloc{ [super dealloc];}- (void)applicationDidFinishLaunching:(NSNotification *)aNotification{ // Insert code here to initialize your application}@end
EDUAppDelegate.H
#import <Cocoa/Cocoa.h>@interface EDUAppDelegate : NSObject <NSApplicationDelegate>@property (assign) IBOutlet NSWindow *window;@end
一个界面文件xib
STEP2
在MainMenu.xib里面增加一个编辑框(Text Field),一个按钮(NSButton),一个List (Table View)
STEP3
增加一个新类,命名为:tableview_ds_todo 属于:NSObject 子类
STEP4
编写:tableview_ds_todo类
tableview_ds_todo.h里面输入以下代码
//// tableview_ds_todo.h// test_list_one_col// // Created by DMD on 29/5/14.// Copyright (c) 2014 EDU. All rights reserved.// 本类的作用是;作为TableView的数据源,主要有一下功能// 1.在TableView增加多行数据,初始化里面显示// 2.有增加函数,绑定界面一个按钮,可以将一个编辑框内容增加到列表里面#import <Foundation/Foundation.h>// 新建文件:Objective-C Class// 然后在下面增加协议 <NSTableViewDataSource>@interface tableview_ds_todo : NSObject <NSTableViewDataSource>// 是TableView里面的一列的一个单元项,这个单元项可以有增加操作@property (nonatomic, copy) NSMutableArray *items;// 控件:请将此变量和界面的编辑控件绑定@property (nonatomic, unsafe_unretained) IBOutlet NSTextField *itemInputField;// 控件:请讲Table View 控件和本变量绑定@property (nonatomic, unsafe_unretained) IBOutlet NSTableView *tableView;// 增加按钮事件:将编辑框内容增加到TableView里面- (IBAction)add:(id)sender;// 给TableView增加一些行,可以在初始化里面调用-(void)full_values_in_tableview;@end
tableview_ds_todo.m里面输入以下代码
//// tableview_ds_todo.m// test_list_one_col//// Created by DMD on 29/5/14.// Copyright (c) 2014 EDU. All rights reserved.//#import "tableview_ds_todo.h"@implementation tableview_ds_todo//手动增加以下三个变量,这三个变量是H文件里面已经定义好的,如果不在这里说明,后面的函数就没法使用@synthesize items;@synthesize itemInputField;@synthesize tableView;//本函数在新建的时候自动生成- (id)init{ self = [super init]; if (self) { //初始化列直 items = [[NSMutableArray alloc] init]; //调用自己的函数,给table一些行 //[self full_values_in_tableview]; } return self;}// 给TableView增加一些行,可以在初始化里面调用,本函数自定义的,非系统生成-(void)full_values_in_tableview{ NSString *text; int i=0; for (i=0; i<6; i++) { text =[NSString stringWithFormat:@"First Name is %d",i+1]; [[self items] addObject:text]; [[self tableView] reloadData]; [[self tableView] scrollRowToVisible:[[self items] count] - 1]; }}// 以下都是手动添加,如果不知道函数名称,可以参照协议<NSTableViewDataSource>// 以下一行可有可无,只是另一种方式的注释,方便阅读而已#pragma mark - Actions- (IBAction)add:(id)sender{NSString *text = [[self itemInputField] stringValue];[[self itemInputField] setStringValue:@""];[[self items] addObject:text];[[self tableView] reloadData];[[self tableView] scrollRowToVisible:[[self items] count] - 1];}// 重要说明:以下2个函数是NSTableViewDataSource协议中必须有的,否则TableView连接不成功// 以下一行可有可无,只是另一种方式的注释,方便阅读而已#pragma mark - NSTableViewDataSource// 必须有:作用是得到table的列数,这样下一次增加的时候才可以知道列,否则增加不了- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView{return [[self items] count];}//必须有:增加列的单元值- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{NSString *text = [[self items] objectAtIndex:row];return text;}@end
STEP5
增加一个连接器,主要作用是将界面上的控件和类里面的各种变量定义和函数绑定,这样界面上的控件才可以去执行类里面的函数。
连接器和控件是放在一个面板里面,和增加控件方式相识,将连接器Object拖拉到窗口界面左边列(放在Font manager下面)里。[这里很重要]
STEP6
设定连接器的属性:类(Custom Class)为:tableview_ds_todo (这个在下拉列表里面可以选择,也可以输入,会自动出现)
STEP7
设定连接器的各个函数的连接和定义的连接
请选中“连接器”,然后选择属性:Show the connections inspectre (是一个圆的向右边的图标)
然后看到你的定义,将定义的圆点,拉到想要的控件上,就可以了。
例如:
itemInputField
后面的圆点,拉到窗口里面的编辑框上tableView
后面的圆点,拉到窗口里面的TableView上add
后面的圆点,拉到窗口里面的按钮上,这样按钮才会区执行add这函数STEP8
给Table增加数据源,实际上就是告诉TableView那个类可以操作它。
点窗口界面上TableView控件,然后在属性里面有一个Data Source,点后面的圆点,然后拉到连接器上。就可以了。
表示这个连接器以一个类为数据源。
如果找不到Data source可以点TableView右击,出现一个黑色列表,拉DataSource后面圆点到连接器Table ds todo上。
连接器在窗口控件的左边,是你自己从控件列表中增加的。
注意:选中TableView的时候,是选中一列,不是整个Table表。
如图:
运行编译,OK!
运行效果如下:
完。
成功!
现在还没有删除,和编辑,后续将继续学习TableView。
- [Cocoa-4th] Chapter6 - Todo List : Table View (1)
- [Cocoa-4th] Chapter6 - NSTableView表格增删改 (详尽介绍2)
- [Cocoa-4th] Chapter6 - NSTableView 表格操作:增加,删除,编辑
- Cocoa练习01:一个简单的Todo list程序
- iOS学习- 13 删除Table View中的Cell - Todo App
- iOS学习- 14 增加Table View中的iteml - Todo App
- [Cocoa-4th] Chapter2 - Random : Object
- todo list
- TODO List
- Todo List
- TODO List
- todo list
- todo list
- TODO list
- //TODO list
- Todo List
- todo list
- Todo List
- C++ 并发编程
- c 关于整型的思考int i=-1 ; while(i--)
- u-boot-2011.09在ST2410上启动流程分析
- File文件操作
- 各种 Java Thread State 第一分析法则
- [Cocoa-4th] Chapter6 - Todo List : Table View (1)
- Spring配置web.xml遇到的问题
- Unity性能优化之Draw Call
- 数字公仔设计蔚为风尚 马路科技打造《魔兽世界》典藏级公仔
- 增加录像时间戳水印、 camera框架介绍
- 什么是ORM?为什么要使用ORM?
- 高性能网络编程5--IO复用与并发编程
- ORACLE 按表字段值的不同统计数量
- openwrt框架分析