Cocoa练习01:一个简单的Todo list程序

写一个简单的todo list程序,界面如下图:

这里写图片描述

在TextField区域输入文字,点击Add按钮会将文字显示在下面的TableView列表中。TableView列表有2列,第一列是文字的输入时间;第二列是文字内容本身。同时TableView的第二列是可以实时手动编辑修改的,修改后自动会修正对应第一列的时间:

这里写图片描述

1.在AppDelegate类的接口中首先绑定2个outlet和1个action:

- (IBAction)add:(id)sender;
@property (weak) IBOutlet NSTableView *tableView;
@property (weak) IBOutlet NSTextField *textField;

2.绑定TableView的delegate和dataSource为AppDelegate本身:

这里写图片描述

3.最后代码补全如下:
AppDelegate.h

//
//  AppDelegate.h
//  TodoList
//
//  Created by kinds on 15/6/28.
//  Copyright (c) 2015年 hopy. All rights reserved.
//

#import <Cocoa/Cocoa.h>

@interface AppDelegate : NSObject <NSApplicationDelegate>
- (IBAction)add:(id)sender;
@property (weak) IBOutlet NSTableView *tableView;

@property (weak) IBOutlet NSTextField *textField;


@end

AppDelegate.m

//
//  AppDelegate.m
//  TodoList
//
//  Created by kinds on 15/6/28.
//  Copyright (c) 2015年 hopy. All rights reserved.
//

#import "AppDelegate.h"

@interface AppDelegate (){
    NSMutableArray *todo_list;
    //NSMutableDictionary *todo_list_dict;
}

@property (weak) IBOutlet NSWindow *window;
@end

@implementation AppDelegate

-(id)init{
    self = [super init];
    if(self){
        todo_list = [NSMutableArray array];
        //todo_list_dict = [NSMutableDictionary dictionary];
    }
    return self;
}

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    // Insert code here to initialize your application
}

- (void)applicationWillTerminate:(NSNotification *)aNotification {
    // Insert code here to tear down your application
}

-(id)tableView:(NSTableView *)tv objectValueForTableColumn:(NSTableColumn *)tableColumn
           row:(NSInteger)row{
    //NSLog(@"%s:%@",__func__,[tableColumn identifier]);
    NSString *colID = [tableColumn identifier];
    NSDictionary *dict = [todo_list objectAtIndex:row];
    return [dict objectForKey:colID];
    //return [todo_list objectAtIndex:row];
}

-(void)tableView:(NSTableView*)tv setObjectValue:(id)obj forTableColumn:(NSTableColumn*)tableColumn
             row:(NSInteger)row{
    NSDictionary *dict = @{@"date":short_now_string(),@"note":obj};
    [todo_list replaceObjectAtIndex:row withObject:dict];
    [_tableView reloadData];
}

-(NSInteger)numberOfRowsInTableView:(NSTableView *)tv{
    return (NSInteger)[todo_list count];
}

NSString* short_now_string(void){
    NSDateFormatter *ft = [NSDateFormatter new];
    ft.dateFormat = @"Y-M-d H:m:s z";
    return [ft stringFromDate:[NSDate new]];
}

- (IBAction)add:(id)sender {
    NSString *str = [_textField stringValue];
    if([str length] == 0)
        return;
    //[todo_list addObject:str];
    //NSDateFormatter *ft = [NSDateFormatter new];
    //ft.dateFormat = @"Y-M-d H:m:s z";
    NSDictionary *dict = @{@"date":short_now_string(),@"note":str};
    [todo_list addObject:dict];
    [_tableView reloadData];
    [_textField setStringValue:@""];
}
@end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 来自 CSDN 的 AI 语言模型回答: 为了编写一个文本编辑器程序,你需要掌握以下技术: 1. Swift 编程语言:Swift 是一种面向对象的编程语言,它是 Apple 公司开发的,用于开发 iOS、macOS 和 watchOS 应用程序。 2. Cocoa 框架:Cocoa 是一种基于 Objective-C 编程语言的框架,用于开发 macOS 应用程序。Swift 也可以与 Cocoa 框架一起使用。 3. 文本处理:文本编辑器程序需要能够读取和编辑文本文件。你需要了解如何读取和写入文件,以及如何处理文本数据。 4. 用户界面设计:你需要设计一个用户界面,使用户可以打开、编辑和保存文本文件。你需要了解如何使用 Cocoa 框架中的视图和控件来创建用户界面。 希望这些信息能够帮助你编写一个成功的文本编辑器程序! ### 回答2: 要编写一个文本编辑器程序,使用Swift语言,需要掌握以下技术: 1. Swift编程语言:作为开发文本编辑器的基础,你需要熟悉Swift的语法、特性和开发环境。 2. UIKit框架:UIKit是iOS上使用的主要用户界面框架,包含了各种视图和控件,可以用于实现文本编辑器的用户界面。 3. Core Text框架:Core Text是一个强大的文本处理框架,可以用于实现文本布局、绘制和编辑等功能。你需要学习如何使用Core Text来处理文本内容。 4. 键盘输入处理:文本编辑器需要能够接收用户的键盘输入。你需要了解如何监听和处理用户的键盘事件,并将输入内容显示在编辑器中。 5. 文本内容存储和管理:一个好的文本编辑器需要支持文本的保存和加载,以及对文本内容的管理,如剪切、复制、粘贴和撤销等操作。你可以使用文件系统或数据库来存储和管理文本内容。 6. 多线程处理:如果你希望实现一些高级功能,如自动保存、自动补全或语法高亮等,你可能需要使用多线程来处理这些任务,以避免阻塞用户界面。 7. 用户界面设计和交互:作为一个文本编辑器,良好的用户界面设计和交互体验是很重要的。你需要学习如何设计吸引人的用户界面,并实现用户与编辑器的交互操作。 总之,要编写一个功能完善的文本编辑器程序,需要掌握Swift编程语言以及相关的UI和文本处理技术。熟悉这些技术后,你可以开始构建一个高效、易用且功能丰富的文本编辑器应用。 ### 回答3: 要用Swift编写一个文本编辑器程序,你需要具备一些技术。 首先,你需要掌握Swift编程语言。了解Swift的基本语法、数据类型、函数等是编写程序的基础。 其次,你需要熟悉iOS或者macOS开发。文本编辑器是在iOS设备上运行还是在macOS设备上运行,你需要选择对应的开发环境。了解iOS或macOS开发的基本知识,掌握UIKit(iOS)或AppKit(macOS)框架,以及对应的视图、控制器等组件。 第三,你需要熟悉文件操作和文本处理。文本编辑器涉及到打开、保存、读取、修改文件的功能,你需要了解文件操作的相关API,如读写文件、创建文件夹、删除文件等。同时,你需要处理用户输入的文本,比如剪贴、复制、粘贴、查找、替换等操作。 此外,你还需要学习UI设计和用户体验。一个好的文本编辑器应该有良好的用户界面,用户应该能够方便地进行文本编辑操作。学习UI设计,了解用户体验的基本原则,提供直观、易用、高效的界面是非常重要的。 最后,你可能还需要学习版本控制和团队协作。如果你的项目是团队开发,你需要使用版本控制工具(如Git),了解如何与其他人协同开发,处理冲突等。 总结起来,要用Swift编写一个文本编辑器程序,你需要掌握Swift语言、iOS或macOS开发、文件操作和文本处理、UI设计和用户体验,以及版本控制和团队协作等技术。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大熊猫侯佩

赏点钱让我买杯可乐好吗 ;)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值