《苹果开发之Cocoa编程》挑战2 创建一个数据源 练习
《苹果开发之Cocoa编程》第4版
P87 创建一个to-do list应用程序,在文本框中输入任务。当用户单击Add按钮时,添加字符串到一个变长队列,新任务就出现在list的末尾。
关键点:
1.NSString 类型的变量去除首尾空格方法:[nsstringItem stringByTrimmingCharactersInSet: [NSCharacterSetwhitespaceAndNewlineCharacterSet]]
2.TableView控件重新加载数据的方法:[_tableView reloadData]
3.TableView添加数据源需要实现的两个方法:
(1)-(NSInteger)numberOfRowsInTableView:(NSTableView *)tv; 在此方法中返回数据源中数据的数量。
(2)-(id)tableView:(NSTableView *)tv objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row; 在此方法中返回row行 tableColumn列的数据内容。
4.TableView如果是可编辑的表格,并使用基于单元格的表格视图,需要实现的方法:
-(void)tableView:(NSTableView *)tv setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
在此方法中更新数据源的数据,然后tableView重新加载数据(reloadData)。
5.两个outlet(文本框、数据列表)和一个action都是通过Assistant editor 面板添加(方便快捷)。
6.在头文件中声明一个变长数组用于存储数据,并做为tableView的数据源。
ToDoLisDemoAppDelegate.h源代码
// // ToDoLisDemoAppDelegate.h // ToDoLisDemo // // Created by apple on 13-7-11. // Copyright (c) 2013年 FDStudio. All rights reserved. // #import <Cocoa/Cocoa.h> @interface ToDoLisDemoAppDelegate : NSObject <NSApplicationDelegate>{ NSMutableArray *_array; } @property (assign) IBOutlet NSWindow *window; @property (weak) IBOutlet NSTextField *textField; //添加的文本框outlet @property (weak) IBOutlet NSTableView *tableView; //添加的tableView表格outlet - (IBAction)addToDataSource:(id)sender; @end
ToDoLisDemoAppDelegate.m 源代码
// // ToDoLisDemoAppDelegate.m // ToDoLisDemo // // Created by apple on 13-7-11. // Copyright (c) 2013年 FDStudio. All rights reserved. // #import "ToDoLisDemoAppDelegate.h" @implementation ToDoLisDemoAppDelegate - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { // Insert code here to initialize your application } -(id)init{ self = [super init]; if(self){ //初始化变长数组 _array = [[NSMutableArray alloc] init]; } return self; } -(NSInteger)numberOfRowsInTableView:(NSTableView *)tv{ return (NSInteger)[_array count]; } -(id)tableView:(NSTableView *)tv objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{ NSString *v = [_array objectAtIndex:row]; return v; } -(IBAction)addToDataSource:(id)sender { //获取文本框内容 NSString *item = [_textField stringValue]; //去掉字符串首尾的空格 item = [item stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]]; ){ [_array addObject: item]; //将字符串添加到变长数组中 [_tableView reloadData]; //tableView重新加载数据 [_textField setStringValue: @""]; //清空文本框的内容 } } //编辑tableView需要实现的方法 -(void)tableView:(NSTableView *)tv setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{ [_array replaceObjectAtIndex: row withObject:object]; //修改变长数组中的内容 [_tableView reloadData]; //tableView重新加载数据 } @end
源代码下载:
《苹果开发之Cocoa编程》挑战2 创建一个数据源 练习的更多相关文章
- 《苹果开发之Cocoa编程》挑战1 创建委托 练习
<苹果开发之Cocoa编程>第4版 P87 新建一个单窗口应用程序,设置某对象为窗口的委托,当用户调整窗口尺寸时,确保窗口高度为宽度的2倍. 需要实现的委托方法为:-(NSSize)win ...
- 苹果开发之COCOA编程(第三版)上半部分
第一章:什么是Cocoa 1.1 历史简介 1.2 开发工具:Xcode.Interface Builder(一个GUI构建工具).在它们内部,使用gcc为编译器来编译代码,并使用gdb来查找错误 1 ...
- 《苹果开发之Cocoa编程》键-值编码和键-值观察
一.KVC 键-值编码(Key - Value Coding, KVC)是通过变量名的读取和设置变量值的一种方法,将字符串的变量名作为key来引用.NSObject定义了两个方法(KVC方法)用于变量 ...
- 苹果开发之COCOA编程(第三版)下半部分
第十八章:Image和鼠标事件 1.NSResponderNSView继承自NSResponder类.所有的事件处理方法都定义在NSResponder类中.NSResponder申明了如下方法:- ( ...
- IOS开发之Cocoa编程—— NSUndoManager
在Cocoa中使用NSUndoManager可以很方便的完成撤销操作.NSUndoManager会记录下修改.撤销操作的消息.这个机制使用两个NSInvocation对象栈. NSInvocation ...
- 苹果开发之App签名
如果你的Apple ID账号(可使用邮箱来注册)为Apple developer类型的话,登录之后是看不到Certificates, Indentifiers & Profiles信息的 Ap ...
- iOS项目开发之Socket编程
有一段时间没有认真总结和写博客了 前段时间找工作.进入工作阶段.比较少静下来认真总结,现在静下心来总结一下最近的一些心得 前言 AsyncSocket介绍 AsyncSocket详解 AsyncSoc ...
- Unity3D游戏开发之C#编程中常见数据结构的比较
一.前言 Unity3D是如今最火爆的游戏开发引擎,它可以让我们能轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型的互动内容.它支持2D/3D游戏开发,据不完全统计,目前国内80%的手机游戏都 ...
- 李洪强iOS开发之OC[013] -类的创建的练习
// // main.m // 12 - 类的创建练习 // // Created by vic fan on 16/7/9. // Copyright © 2016年 李洪强. All ri ...
随机推荐
- DotNetBar v14.0.0.3 Fully Cracked
更新信息: http://www.devcomponents.com/customeronly/releasenotes.asp?p=dnbwf&v=14.0.0.3 如果遇到破解问题可以与我 ...
- vi编辑器选项
Vi编辑器有一些选项设置可以帮助人们更好的使用. 在vi中选项分为两种: 1. 开关选项,如果要打开这类选项就使用ex命令——:set 选项:如果要关闭这类选项就是用ex命令——:set no选项 ...
- javascript插件uploadify简单实现文件上传
最近在学习mvc,需要用到文件上传的功能,找了很多的jquery插件,最后决定使用uploadify这个插件,参照了各位大神的博客,终于勉勉强强会用了.在此,做一下笔记,方便以后忘了查看. 首先在官网 ...
- CentOS中配置LNMP环境打开提示File not found
在centos系统中配置好php环境了,但是发现能运行html页面并不能运行php文件了,这样我就在gg的帮助下一步不解决了,下面来看问题的具体解决过程. 安装之后测试发现,怎么Html能运行 ...
- 2016 - 1- 14 UI阶段学习补充 transform属性详解
UIView的transform属性 transform是view的一个重要属性,它在矩阵层面上改变view的显⽰状态,能实现view的缩放.旋转.平移等功能.transform是CGAffineTr ...
- python基础之模块之os模块
os模块 os模块的作用: os,语义为操作系统,所以肯定就是操作系统相关的功能了,可以处理文件和目录这些我们日常手动需要做的操作,就比如说:显示当前目录下所有文件/删除某个文件/获取文件大小…… 另 ...
- ZJOI 仓库建设 (斜率DP)
f[i]=min(f[j]+w[j,i])+c[i]; j∈[0,i-1] w[j,i]=p[j+1]*(x[i]-x[j+1])+...+p[i]*(x[i]-x[i]); 最裸的DP是n^2的, ...
- Magneto插件整理
以connect20.magentocommerce.com开头的是connect 2.0的key.有些网页打不开了.但是connect的地址经测试是可用的. Mangento 免费团购模块 http ...
- oracle将多条数据合并成一条
select t.col1,t.col2 ,wmsys.wm_concat(t.col3||' ') AS col3 , wmsys.wm_concat(t.col4||'') as col4,w ...
- Web页面性能测试工具浅析
http://www.cnblogs.com/fo0ol/p/3297054.html 做Web开发,难免要对自己开发的页面进行性能检测,自己写工具检测,工作量太大.网上有几款比较成熟的检测工具,以下 ...